2015-08-28 4 views
2

Я использую GCC на ubuntu, и мне нужна функция, которая измеряет время, в течение которого моя функция использует CPU. Я не хочу включать время, затрачиваемое ЦП на фоновые процессы.Как измерить время моей функции, и только моя функция использует CPU

Например, если моя функция использовала процессор в течение 10 мс, то процессор обрабатывал некоторые другие данные за 20 мс, а затем продолжал работать над моей функцией в течение 8 мс. Я хочу, чтобы он вернул 18 мс, а не 38. Я не возражаю, если результат был в тике процессора.

+0

ли «моя функция» означает всю программу (в этом случае, просто использовать временную программу), или же вы на самом деле только хотите, чтобы время процессорного использования определенного подмножества вашей программы? – MTilsted

+0

Это называется «CPU time» вместо «настенных часов» – MSalters

ответ

-2

Вы хотите взглянуть на clock() (man 3 clock).

+0

Любые замечания от downvoters, пожалуйста? –

+0

Не один из них, но, возможно, это потому, что 'clock()' не подходит для этого в многопоточном многоядерном сценарии, так как cputime будет накапливаться у всех исполнителей, делая его быстрее, чем waltime. –

1

В дополнение к ответу Baris Demiray я лично могу рекомендовать инструмент callgrind (как и любой другой инструмент) инструментария valgrind. Это особенно полезно в сочетании с kcachegrind/qcachegrind, который должен быть доступен через репозитории ubuntu.

Очень краткое описание обоих инструментов, дргоЕ и callgrind можно найти здесь: http://kcachegrind.sourceforge.net/html/Introduction.html