Как измерить время моей функции, и только моя функция использует процессор

Я использую GCC в Ubuntu, и я хочу функцию, которая измеряет время, когда моя функция использует процессор. Я не хочу включать время, которое процессор тратит на фоновые процессы.

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

2

Решение

То, что вы хотите сделать, называется профилированием и gprof на Linux это очень удобно, смотрите http://www.ibm.com/developerworks/library/l-gnuprof.html.

2

Другие решения

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

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

1

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

-2