1

Я ищу, чтобы получить количество микросекунд, которые процесс требует для выполнения. Кто-нибудь знает, как это сделать в системе Linux? (Я ищу значение времени более точное, чем миллисекунды, потому что я измеряю что-то очень чувствительное.)

ПРИМЕЧАНИЕ: я не думаю, что команда time сработает с той точностью, которую я ищу ... похоже, она уменьшается до миллисекунд, что недостаточно для моих целей

3 ответа3

2

Вы не говорите, является ли это вашим собственным кодом, и вы хотите определить время для его части внутри. Вы также не говорите, что вы на самом деле пытаетесь достичь.

Одна вещь, которую вы можете сделать, это запустить какую-то программу в оболочке. Если это так, то самый простой способ - рассчитать цикл из нескольких вызовов процесса и выполнить математику.

Bash:

t=($({ time -p for i in {1..1000000}; do some_prog; done; } 2>&1))
echo "scale=6;${t[1]}/1000000" | bc

Если ваша команда date (и система) поддерживает наносекунды, и вы не против накладных расходов:

begin=$(date +%s.%N); some_prog; end=$(date +%s.%N); echo "scale=6; $end - $begin" | bc
1

Вы должны взглянуть на PAPI. Кстати, есть похожий вопрос.

0

times(2) возвращает время процесса в jiffies, а не время. Как таковой он может измерять только единицы времени так же точно, как частота вашего ядра. clock_gettime(2) может делать более точные разрешения, если ядро скомпилировано правильно, но нет простого в использовании пользовательского интерфейса к нему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .