профилирование с помощью valgrind, а не gcc

какое-то время я использовал gprof для профилирования моего кода C, но он очень и очень нестабилен, при каждом запуске он дает мне разное время моделирования, а также %. Я решил переключиться на valgrind, я профилирую с помощью valgrind, однако я хочу отображать данные и получать результаты, аналогичные gprof. В gprof я получил % времени выполнения, self ns/call

Есть ли способ получить эту информацию без использования kcachegrind?

Kcachegrind открывает пользовательский интерфейс, и я предпочитаю получать файлы, чтобы я мог их анализировать, так как я хочу выполнить несколько профилей одновременно.

Спасибо за помощь


person Syntax_Error    schedule 11.07.2011    source источник
comment
Какой код вы профилируете? Код приложения или код библиотеки? Есть ли в нем ввод-вывод? Есть ли рекурсия? В любом случае, вы пробовали Zoom от RotateRight.com?   -  person Mike Dunlavey    schedule 11.07.2011
comment
Я после некоторого бесплатного ПО, на данный момент у Zoom есть 30-дневная пробная версия.   -  person Syntax_Error    schedule 11.07.2011
comment
Итак, этот метод бесплатен и работает, хотя и противоречит общей мудрости в стиле gprof. Причина, по которой вы спрашиваете, что вы профилируете, заключается в том, что gprof полезен только для очень узкого типа программы - с привязкой к процессору, не так много вызовов, без рекурсии и т. д.   -  person Mike Dunlavey    schedule 11.07.2011
comment
выглядит хорошо, попробую, если valgrind не работает! спасибо =)   -  person Syntax_Error    schedule 11.07.2011
comment
Он основан на идее, что тяжелые операторы естественным образом подвергаются случайным снимкам, и вам не нужно их измерять. В пределе вы можете найти бесконечный цикл за один выстрел.   -  person Mike Dunlavey    schedule 11.07.2011


Ответы (1)


Итак, если вы хотите использовать голые данные, почему вы смотрите на графический интерфейс? Начните с нижнего уровня, самого cachegrind. http://valgrind.org/docs/manual/cg-manual.html

person MK.    schedule 11.07.2011
comment
Я не смотрю на графический интерфейс, но для получения результатов KCachegrind использует графический интерфейс. Я ищу команду, которая бы отображала такую ​​​​информацию в командном окне - person Syntax_Error; 11.07.2011
comment
@Syntax_Error Я пытаюсь сказать, что KCachegrind - это просто слой графического интерфейса поверх Cachegrind, поэтому решение вашей проблемы, вероятно, заключается в использовании Cachegrind, а не KCachegrind. - person MK.; 11.07.2011
comment
инструмент callgrind, между прочим (cachegrind на самом деле другой). Он выгружает результаты в файл, который вы затем открываете в kcachegrind. Все, что вы можете делать в интерфейсе командной строки, — это управлять дампом моментальных снимков, обнулением счетчиков, запуском/остановкой инструментария и т. д. с помощью callgrind_control и чтением файлов, созданных дампом счетчиков. Чтение последних вручную довольно бесполезно, IMO, и использование графического интерфейса, такого как kcachegrind, для их открытия настолько хорошо, насколько это возможно. Конечно, вы можете собрать эти файлы во время запуска callgrind в CLI, а затем открыть и проанализировать их в kcachegrind. - person Frank Osterfeld; 11.07.2011