Расширяя еще один ответ, я использую опцию 'callgrind' valgrind (http://valgrind.org). Затем устанавливаю kcachegrind из KDE для хорошего интерфейса с графическим интерфейсом.
Как учебник манекена, выполните:
1) Скомпилируйте ваше приложение с отладочной информацией. Рекомендуется попробовать профилирование с включенной и выключенной оптимизацией, при выключенной оптимизации вы получите больше информации, но она может быть менее точной (в частности, крошечные функции могут занять больше времени, чем они заслуживают.
2) Выполнить с:
valgrind --tool=callgrind <name of your app> <your app's options>
Это должно привести к созданию файла с именем 'callgrind.something', который вы можете загрузить в kcachegrind.
Вы также можете посмотреть на:
valgrind --tool=cachegrind <name of your app> <your app's options>
Что даст вам информацию о том, как ваше приложение взаимодействует с кешем вашего процессора.
Обратите внимание, что хотя valgrind и shark похожи на похожие приложения, они работают совершенно по-разному. Когда вы запускаете приложение в valgrind, оно будет работать во много раз медленнее, чем обычно (часто более чем в 40 раз медленнее), но результаты, которые вы получаете, намного точнее, чем у акулы. Я склонен использовать оба, поэтому я могу получить как можно больше информации!