Я ищу профайлера, чтобы найти узкое место в моем коде на С++. Я бы хотел найти бесплатный, неинтрузивный и хороший инструмент для профилирования. Я разработчик игр, и я использую PIX для Xbox 360 и нашел это очень хорошим, но это не бесплатно. Я знаю Intel VTune, но он также не свободен.
Какой лучший бесплатный профайлер С++ для Windows?
Ответ 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());
}
Ответ 5
В Microsoft есть инструментарий производительности Windows.
Это требует Windows Vista, Windows Server 2008 или Windows 7.
Ответ 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, чтобы помочь мне запустить его и посмотреть на результаты.
Ответ 13
Вы можете использовать EmbeddedProfiler, бесплатно для Linux и Windwos.
Профайлер навязчив (по функциональности), но он не требует каких-либо модификаций кода. Просто добавьте специальный флаг компилятора (-finstrument-functios для gcc/MinGW или /GH для MSVC) и свяжите библиотеку профилировщика. Он может предоставить вам полное дерево вызовов или список funciton. Он имеет собственный графический интерфейс анализатора.