Я запускаю Ubuntu 18.04 и плохо знаком с Ubuntu и Linux в целом. Я пытаюсь измерить время выполнения команды вниз к миллисекунде. Я также хотел бы добавить на этот раз в файл, потому что я делаю это много времен в для цикла. Наконец, я хотел бы иметь самый простой и легкий читаемый синтаксис.
Длинная короткая история: Я хотел бы /usr/bin/time
управляйте для возврата результата, точного миллисекунде.
Я считал другие потоки, упомянув переменную среды формата времени, но никогда как изменить ее.
Заранее спасибо за справку.
РЕДАКТИРОВАНИЕ: Принимая все ответы во внимание, решение было чем-то как
#!/bin/bash
ts=$(date +%s%N)
command
echo "formatting $((($(date +%s%N) - $ts)/1000000)) formatting" >> file_to_append_time_to
Эти time
сама команда не способна к выполнению этого непосредственно. Это действительно производит время в дробном формате, таким образом, это может быть проанализировано назад в миллисекунды путем умножения на 1 000:
$ time sleep 1s
> real 0m1.006s
$ echo '1.006 * 1000' | bc
> 1006.000
Это означает, что Вы можете отчасти делать команду, которая делает это через:
{ time $@ ; } |& grep real | sed -E 's/[^0-9\.]+//g' | tr -d '\n' | (cat && echo " * 1000") | bc
Это по существу анализирует вывод time
и умножает его на 1 000. Это - путаница, потому что, ну, в общем, колотят.
, Вероятно, лучше/больше полезная путаница была бы этим пользователем сценария Infineight отправленный на Переполнении стека :
#!/bin/bash
ts=$(date +%s%N)
$@
echo $((($(date +%s%N) - $ts)/1000000))
Это (я развернул его для удобочитаемости) сохраняет текущую метку времени наносекунды от date
, выполняет команду, затем делает вычитание для вычисления, время протекло и форматирует его в миллисекунды.
В моем тестировании они оба, казалось, привели к тем же результатам.