Какой лучший бесплатный профайлер С++ для Windows?

Я ищу профайлера, чтобы найти узкое место в моем коде на С++. Я бы хотел найти бесплатный, неинтрузивный и хороший инструмент для профилирования. Я разработчик игр, и я использую PIX для Xbox 360 и нашел это очень хорошим, но это не бесплатно. Я знаю Intel VTune, но он также не свободен.

Ответ 1

CodeXL теперь вытеснил End Of Line'd AMD Code Analyst и оба являются бесплатными, но не такими продвинутыми, как VTune. Там также Sleepy, что очень просто, но выполняет работу во многих случаях.

Ответ 2

Very Sleepy - это профилировщик процессора C/С++ для Windows (бесплатно).
CppCheck - статический профилировщик C/С++ для систем Windows (бесплатно).

Ответ 3

Proffy довольно круто: http://pauldoo.com/proffy/

Отказ от ответственности: я написал это.

Ответ 4

Существует программный (функционально-точный) профилировщик для MS VC 7.1 и выше, называемый MicroProfiler. Вы можете получить его здесь (x64) или здесь (x86). Он не требует каких-либо изменений или дополнений к вашему коду и способен отображать статистику функций с вызывающими и вызываемыми лицами в режиме реального времени без необходимости закрытия приложения/остановки процесс профилирования.

Он интегрируется с VisualStudio, поэтому вы можете легко включить/отключить профилирование для проекта. Также возможно установить его на чистую машину, ему нужна только информация о символе, которая будет расположена вместе с профилированным исполняемым файлом.

Этот инструмент полезен, когда статистическая аппроксимация из пробоотборников выборки, таких как Very Sleepy, недостаточна.

Грубое сравнение показывает, что он превосходит AQTime (когда он вызывается в инструментах, запускается на уровне функций). Следующая программа (полная оптимизация, вставка отключена) выполняется в три раза быстрее с отображением результатов микропрофилирования в режиме реального времени, чем при AQTime просто собирает статистику:

void f()
{
    srand(time(0));

    vector<double> v(300000);

    generate_n(v.begin(), v.size(), &random);
    sort(v.begin(), v.end());
    sort(v.rbegin(), v.rend());
    sort(v.begin(), v.end());
    sort(v.rbegin(), v.rend());
}

Ответ 6

Новое дополнение Shiny.

Ответ 7

Я настоятельно рекомендую "Инструментарий производительности Windows" (WPT) или XPERF

Инструмент командной строки командной строки командной строки xperf записывает журналы трассировки событий для Windows (ETW), которые можно проанализировать с помощью инструмента xperfview графического интерфейса.

Использование аргумента командной строки stacktrace оказалось бесценным инструментом для моей компании, поскольку он профилирует и устраняет узкие места. Одна из самых убедительных вещей заключается в том, что WPT можно установить в любой среде даже на почтенной Windows XP.

В Windows 8 анализатор производительности Windows принимает xperf на еще более высокий уровень.

Жесткие номера и статистика, представленные в журналах ETW, не имеют аналогов в деталях, кроме профилировщика visual studio (2010/2012), который также является отличным, но не бесплатным AFAIK.

Если вы никогда не использовали xperf... вы не знаете, что вам не хватает

Ответ 8

Я использую AQTime, это один из лучших инструментов профилирования, который я когда-либо использовал. Это не бесплатно, но вы можете получить 30-дневную пробную версию, поэтому, если вы планируете оптимизировать и профилировать только один проект, и вам достаточно 30 дней, я бы рекомендовал использовать это приложение. (http://www.automatedqa.com/downloads/aqtime/index.asp)

Ответ 9

Пожалуйста, попробуйте мой профилировщик, называемый cRunWatch. Это всего лишь два файла, поэтому их легко интегрировать с вашими проектами и требуется добавить ровно одну строку для создания фрагмента кода.

http://ravenspoint.wordpress.com/2010/06/16/timing/

Требуется библиотека Boost.

Ответ 10

Я использовал "TrueTime - часть пакета Compuware DevPartner в течение многих лет. Там есть [бесплатная версия] (вы можете попробовать Compuware DevPartner Performance Analysis Community Edition.).

Ответ 11

Я использовал Luke Stackwalker, и он выполнил эту работу для моего проекта Visual Studio.

Другие интересные проекты:

Ответ 12

Я использую VSPerfMon, который является профилировщиком StandAlone Visual Studio. Я написал инструмент GUI, чтобы помочь мне запустить его и посмотреть на результаты.

http://code.google.com/p/vsptree/

Ответ 13

Вы можете использовать EmbeddedProfiler, бесплатно для Linux и Windwos.

Профайлер навязчив (по функциональности), но он не требует каких-либо модификаций кода. Просто добавьте специальный флаг компилятора (-finstrument-functios для gcc/MinGW или /GH для MSVC) и свяжите библиотеку профилировщика. Он может предоставить вам полное дерево вызовов или список funciton. Он имеет собственный графический интерфейс анализатора.