Подтвердить что ты не робот

Используйте valgrind, чтобы узнать время (в секундах), затрачиваемое на каждую функцию

есть ли какое-либо расширение valgrind, которое можно использовать в окне команды, которое поможет мне узнать время, в секундах, потраченное на каждую функцию в моем C-коде?

thanks =)

4b9b3361

Ответ 1

Для машинного программирования профилирования используйте valgrind callgrind (также, cachegrind может делать профилирование предсказаний в кэш и ветки, что довольно приятно).

Для измерений времени используйте google cpu profiler, он дает лучшие результаты, чем gprof. Вы можете установить частоту дискретизации, и он может отображать вывод в виде красивого аннотированного графика вызовов.

Ответ 2

Valgrind не подходит для измерения времени, так как запуск приложения в valgrind искажает результаты (замедление, CPU против ввода-вывода). Таким образом, инструмент профилирования valgrind callgrind не измеряет время, кроме инструкций CPU. Callgrind полезен только в том случае, если ваше узкое место связано с CPU (поэтому важны инструкции CPU), тогда измеренные инструкции процессора будут пропорциональны затраченному времени. Это не полезно, если задействованы тяжелые операции ввода-вывода или несколько процессов. Затем вы должны использовать профилировщик выборки, например gprof или sysprof. Это проверяет интервалы, в которых работает процесс, с менее искаженными результатами.

Ответ 3

Используйте эту ссылку. Я бы подумал, что что-то вроде Callgrind должно сделать трюк.