Профилирование частичных программ в Linux - PullRequest
6 голосов
/ 08 июля 2011

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

Ответы [ 4 ]

11 голосов
/ 08 июля 2011

Точно так же вы можете использовать

valgrind --tool=callgrind --collect-atstart=no --toggle-collect=<function> 

Другие опции для просмотра:

--instr-atstart    # to avoid runtime overhead while not profiling

Чтобы получить статистику уровня инструкции:

--collect-jumps=yes
--dump-instr=yes

В качестве альтернативы выможете «дистанционно» управлять им на лету: callgrind_control или комментировать ваш исходный код (IIRC также со статистикой предсказаний ветвлений): callgrind_annotate.

Отличный инструмент kcachegrind - это изумительный инструмент для визуализации и навигации.Я вряд ли рекомендую это достаточно:

enter image description here

5 голосов
/ 08 июля 2011

Я бы подумал об использовании чего-то более современного, чем gprof, например OProfile.При создании отчета с использованием opreport вы можете использовать опцию --exclude-symbols, чтобы исключить функции, которые вам не интересны.

Подробнее см. На веб-странице OProfile ;однако, краткое руководство по началу работы см. на странице OProfile docs .

2 голосов
/ 20 июля 2011

Zoom от RotateRight предлагает общесистемный временной профиль для Linux.Если ваш код тратит много времени на ввод-вывод, то это время не будет отображаться во временном профиле процессоров.В качестве альтернативы, если вы хотите учесть время, потраченное на ввод-вывод, попробуйте «Профиль времени потока».

0 голосов
/ 08 июля 2011

для простого базового решения вы можете захотеть записать данные в файл csv.

например. Формат [functionKey, timeStamp \ n]

... затем загрузите это в Excel. Получить дельты, а затем включить или исключить на основе функций if. Ничего фантастического. С другой стороны, вы можете получить некоторые визуализации довольно дешево.

...