Вы можете использовать инструмент callgrind для valgrind, который должен быть частью каждого распределения valgrind. Он запускает программу в виртуальной машине valgrind и подсчитывает количество инструкций, потраченных на каждую функцию / строку кода.
Лучший интерфейс для визуализации результатов - это kcachegrind (часть KDE).
Преимущество: он работает довольно хорошо, если ваше узкое место связано с ЦП, поскольку он полностью имитирует приложение, поэтому можно получить очень точные и подробные результаты, если вас интересуют инструкции ЦП. В противном случае результаты могут быть искажены.
Недостаток: он медленный (как валгринд). Если ваша проблема связана с вводом / выводом, медленная скорость выполнения искажает результаты (делая сравнение операций ввода / вывода более быстрым), а также влияет на поведение. В таких случаях профилировщик, берущий образцы, является лучшим подходом.