Для Windows я пробовал AMD Codeanalyst, Intel VTune и профилировщик в Visual Studio Team Edition.
Codeanalyst содержит ошибки (часто дает сбой), и в моем коде его результаты часто неточны. Его пользовательский интерфейс не интуитивно понятен. Например, чтобы отобразить стек вызовов в результатах профиля, вам нужно щелкнуть вкладку «Процессы», затем щелкнуть имя EXE-файла вашей программы, затем щелкнуть кнопку панели инструментов с крошечными буквами «CSS» на ней. Но это бесплатное программное обеспечение, поэтому вы можете попробовать его, и оно работает (с меньшим количеством функций) без процессора AMD.
У VTune (700 долларов) ужасный пользовательский интерфейс IMO; в большой программе трудно найти конкретное дерево вызовов, которое вы хотите, и вы можете смотреть только на один «узел» в программе за раз (функция с ее непосредственными вызывающими и вызываемыми объектами) - вы не можете смотреть на полное дерево звонков. Есть представление графика вызовов, но я не смог найти способ, чтобы относительное время выполнения отображалось на графике. Другими словами, функции на графике выглядят одинаково, независимо от того, сколько времени на них было потрачено - как будто они полностью упустили точку профилирования.
Профилировщик Visual Studio имеет лучший графический интерфейс из трех, но по какой-то причине он не может собирать образцы из большей части моего кода (образцы собираются только для нескольких функций во всей моей программе на C ++). Кроме того, я не мог найти цену или способ купить его напрямую; но он поставляется с подпиской MSDN моей компании. Visual Studio поддерживает управляемый, собственный и смешанный код; Я не уверен насчет двух других профилировщиков в этом отношении.
В заключение, я еще не знаю хорошего профилировщика! Я обязательно ознакомлюсь с другими предложениями здесь.