Предполагая, что date
является версией GNU:
start=$(date +%s.%N)
./CircuitRouter-SeqSolver $2
end=$(date +%s.%N)
Другие версии могут иметь или не иметь %N
наносекундную часть. Чтобы ограничить разрешение шестью знаками после запятой, вы можете делать разные вещи, но проще всего:
printf "%0.6f\n" $((end-start))
Изменить :исправление для bash
не выполняет математические операции с плавающей запятой:
printf %0.6f\n" $(echo $end-$start | bc)
Вы видели мою посылку bosh
отhttp://schilytools.sourceforge.net/bosh.html? Это текущая поддерживаемая версия Bourne Shell.
Поддерживает синхронизацию с микросекундной точностью, см. man на страницеhttp://schillix.sourceforge.net/man/man1/bosh.1.htmlв разделе параметров (около страницы 25 )есть описание переменной TIMEFORMAT
.
Обратите внимание, что точность системного процессорного времени и пользовательского процессорного времени в Linux составляет всего 1 мс, но время настенных часов может быть получено с точностью до микросекунды.
Вам необходимо знать, что вывод time
встроенной или автоматизированной синхронизации для каждой команды поступает в stderr
основной оболочки и что вам может потребоваться перенаправить stderr
для команды отдельно, чтобы иметь возможность получать соответствующий вывод в отдельном файле.