Какой лучший бесплатный профилировщик C ++ для Windows? [закрыто]


224

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


VTune теперь свободен: software.intel.com/en-us/vtune . Я скачал выпуск для сообщества, и он отлично справляется с профилированием C ++, а также управляет кодом C #
Dr. ABT

1
Как это не по теме? Средства разработки находятся в теме, насколько я знаю. Это основано на мнении, хотя.
Ник Шерман

Ответы:


135

CodeXL теперь заменил AMD Code Analyst в конце строки, и оба они бесплатны, но не так продвинуты, как VTune. Есть также Sleepy , который очень прост, но делает работу во многих случаях.


4
Вот ссылка для CodeAnalyst: developer.amd.com/CPU/CODEANALYST/Pages/default.aspx
epotter

1
Я пытался работать с этим сейчас, и мне это совсем не понравилось. Я даже не мог понять, как получить общее время функции% (включая вызываемых абонентов), которое TrueTime мог бы хорошо делать 10 лет назад.
Павел Радзивиловский

Я написал адаптацию сонный, которая не зависит от wxWidgets, но работает в командной строке. Вы запускаете его в течение некоторого времени для запущенного процесса, а затем, когда останавливаете его, вы получаете статистику того, на что процесс тратит свое время. Это не навязчиво в том смысле, что вам не нужно каким-либо образом изменять свой код, чтобы использовать его, но он приостанавливает ваши потоки, когда читает стеки вызовов. Вам также нужны доступные файлы pdb, чтобы вы могли получить значимый вывод, но я думаю, что это применимо к любому профилировщику.
CashCow

Я бы порекомендовал попробовать xperf, который мне показался превосходящим аналитик AMD.
MW_dev

1
CodeAnalyst больше не будет получать обновления, за исключением исправлений критических ошибок. Они перешли на CodeXL. Вот ссылка, чтобы вы могли обновить свой ответ. И, кстати, спасибо, что сообщили мне сейчас о CodeAnalyst / XL.
Adri CS

61

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


20
googletest - это фреймворк для юнит-тестирования. Как бы вы использовали это для выполнения профилирования?
пра-волк

Если вы используете двоичный файл Windows из стека gcc, это отличный выбор - AMD CodeAnalyst не распознает символы gcc в Windows, но делает это очень сонно!
Майк


17

Для 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());
}

1
Это простой в использовании и супер-быстрый профилировщик. Единственная проблема, которую я не решил, это проблема, заключающаяся в том, что после того, как я закончил отладку, окно профилировщика не закрывалось автоматически, и вам пришлось убить его через диспетчер задач (без этого вы не можете перекомпилировать свой проект).
Людек Водичка

1
Я обнаружил, что после закрытия приложения обычной кнопкой ЗАКРЫТЬ окно профилировщика также можно регулярно закрывать. Но когда я выхожу из приложения с помощью сочетания клавиш SHIFT + F5 (остановить отладку команды VS), кнопка закрытия окна профилировщика отключается.
Людек Водичка

Не работает с VS 2015.
rustyx

1
Исправлено с 1.1.590. Смотрите обновления на странице галереи Visual Studio ( visualstudiogallery.msdn.microsoft.com/… )
Арти

1
Это действительно очень хорошо! Должен быть выше! Супер прост в установке и запуске, и дает вам большую часть того, что вам нужно знать. Мой второй выбор - анализатор производительности Windows: geekswithblogs.net/akraus1/archive/2015/04/21/163342.aspx
Стив

10

У Microsoft есть Windows Performance Toolkit .

Требуется Windows Vista, Windows Server 2008 или Windows 7.


6
Как это не бесплатно? Это часть Windows SDK. Я смог скачать его без проблем. (По общему признанию, у нас есть подписка MSDN, поэтому некоторые люди могут иметь другой опыт, чем я.)
epotter

1
Бесплатно или нет, ссылка больше не работает должным образом.
Томаш Зато - Восстановить Монику


5

Я настоятельно рекомендую Windows Performance Toolkit (WPT) или XPERF

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

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

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

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

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


1
Я знаю, что мне не хватает рабочего URL сайта.
Томаш Зато - Восстановить Монику

3

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


Только этот инструмент помог мне профилировать скомпилированные в режиме релиза смешанные (управляемые и собственные) веб-приложения на IIS.
Монсеньор

К сожалению, они не поддерживают людей, которые пытаются оценить их продукт.
Счастливчик Люк

В настоящее время они предлагают 14-дневную пробную версию с ограниченной функциональностью.
Макс

2

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

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

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



0

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


0

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

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


0

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.