Подтвердить что ты не робот

Достойный профилировщик для Windows?

Имеются ли в наличии какие-либо надежные пробоотборники (например, неинструментные)? Предпочтительно что-то похожее на Shark на MacOS, хотя я готов принять то, что мне придется заплатить за такой профайлер на окнах.

Я пробовал профилировщик в VS Team Suite и не был слишком впечатлен, и мне было интересно, есть ли другие хорошие.

[Edit: Erk, я забыл сказать, что это для C/С++, а не .NET - извините за любую путаницу]

4b9b3361

Ответ 1

Intel VTune хорош и не является инструментом. Мы оценили целую кучу профилировщиков для Windows, и это было лучше всего для работы с кодом драйвера (хотя это и неуправляемый код уровня пользователя). Особая сила заключается в том, что он считывает все счетчики производительности процессора Intel, поэтому вы можете хорошо понять, почему ваш код работает медленно, и было полезно поместить инструкции предварительной выборки в наш код и отсортировать макет данных, чтобы хорошо работать с кеш-строки, а также способы, в которых линии кэша становятся недействительными в многоядерных системах.

Это коммерчески, и я должен сказать, что это не самый простой пользовательский интерфейс в мире.

Ответ 2

Для Windows ознакомьтесь с бесплатным Xperf, который поставляется с Windows SDK. Он использует выборочный профиль, имеет некоторый полезный интерфейс и не требует инструментов. Весьма полезно для отслеживания проблем с производительностью. Вы можете ответить на такие вопросы, как:

Кто использует большинство процессоров? Перейдите к имени функции, используя стеки вызовов.

Кто выделяет большую часть памяти?

Выдающиеся распределения памяти (утечки)

Кто выполняет большинство запросов к реестру?

Диск записывается? и т.д.

Ответ 3

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

У него нет счетчика функций, о котором упоминалось ранее в некоторых других профилировщиках, но это довольно респектабельный профилировщик, который будет работать очень хорошо в большинстве ситуаций.

Ответ 4

AMD CodeAnalyst БЕСПЛАТНО здесь

Ответ 5

Мы используем как VTune, так и AQTime, и я могу ручаться за них. Что лучше всего подходит для вас, зависит от ваших потребностей. У обоих есть бесплатные пробные версии - я предлагаю вам отдать им удовольствие.

Ответ 6

Набор драйверов для Windows включает в себя неинкрементный профилировщик прокси-данных пользователя/ядра под названием "kernrate" . Это полезно для профилирования многопроцессорных приложений, приложений, которые проводят большую часть времени в ядре, и драйверов устройств (конечно). Он также доступен в KrView (Kernrate Viewer) и Windows Server 2003 Resource Kit Tools.

Kernrate работает в Windows 2000 и более поздних версиях (в отличие от Xperf, для чего требуется Vista/Server 2008). Он основан на командной строке, и в документации есть несколько пугающий список опций. Я не уверен, может ли он записывать стеки вызовов или просто счетчик программ. Если вы используете сервер символов, обязательно поставьте обновленные dbghelp.dll и symsrv.dll в том же каталоге, что и kernrate.exe, чтобы предотвратить использование старой версии dbghelp.dll, установленной в %SystemRoot%\system32.

Ответ 7

Я пробовал Intel vtune с довольно большим проектом около двух лет назад. Тогда это был инструментальный профилировщик, и потребовалось так много времени, чтобы инструмент DLL, который я пытался прокомментировать, что в конце концов потерял терпение через час.

Один инструмент, который у меня был неплохой, и который я бы очень рекомендовал, - это AQTime. Он не только обеспечивает отличные ресурсы профилирования производительности, но также делает действительно хорошее профилирование памяти, которое оказало существенную помощь в отслеживании утечек памяти.

Ответ 8

Luke Stackwalker кажется многообещающим - он не такой отполированный, как мне бы хотелось, но он с открытым исходным кодом, и он делает что-то, что кажется очень близким к тому, что @Mike Dunlavey продолжает говорить, что мы должны делать. (Конечно, тогда он пытается сгладить все это на типично бесполезные графики вызовов, которые Майк так устал, но не должно быть слишком сложно исправить это с помощью источника как нашего союзника.)

Похоже, что время ожидания в ядре подсчитывается, насколько я могу судить...

Ответ 9

Я не уверен, что такое неинструментальный профайлер, но я могу сказать, что для .NET я люблю RedGate ANTS Profiler. Версия 3 превосходит версию MS для простоты использования и Версии 4, которая позволяет произвольные временные фрагменты, делает MS похожим на шутки.