Який найкращий безкоштовний 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 End Of Line Line, і обидва вони безкоштовні, але не такі просунуті, як VTune. Є також сонний , що дуже просто, але це робить роботу у багатьох випадках.


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.
Адрі CS CS

61

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


20
googletest - це блок тестування одиниць. Як би ви це використовували для виконання профілювання?
greatwolf

Якщо ви використовуєте двійковий файл 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/… )
Arty

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 GUI GUI.

Використання аргументації командного рядка 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.
Монсеньйор

Прикро, що вони не підтримують людей, які намагаються оцінити свій продукт.
Lucky Luke

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



0

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


0

Я використовую VSPerfMon, який є автономним Visual Studio Profiler. Я написав інструмент GUI, щоб допомогти мені запустити його і подивитися на результати.

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


0

Ви можете використовувати EmbeddedProfiler, це безкоштовно і для Linux, і для Windwos.

Профілер є настирливим (за функціональністю), але він не потребує будь-яких змін коду. Просто додайте специфічний прапор компілятора (-finstrument-functios для gcc / MinGW або / GH для MSVC) і зв’яжіть бібліотеку профілю. Він може надати вам повне дерево викликів або просто список функцій. У нього є власний графічний інтерфейс аналізатора.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.