2008-10-04 3 views
24

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

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

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

+0

Мне также понравились предложения для профилировщиков, которые не так тесно связаны с VS, что означает те, которые могут работать автономно, и предпочтительно использовать больше форматов информации для отладки, чем pdb. – aib 2008-10-04 10:30:46

ответ

11

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

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

+1

VTune - хороший инструмент, но его не бесплатно, и он не понимает внутренности Windows. – Foredecker 2008-11-10 00:22:36

+4

vtune также имеет ужасный, ужасный интерфейс, я нашел его совершенно ужасным. – 2009-10-28 11:23:22

-3

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

+2

Пробоотборники пробоотбора работают, периодически наблюдая состояние вашей программы и, таким образом, неинвазивны и работают с исполняемыми файлами без исходного кода. (Хотя вам, вероятно, потребуется отладочная информация для разрешения вызовов функций и т. Д.) - исправьте меня, если я ошибаюсь. – aib 2008-10-04 10:28:33

+0

@aib: это, безусловно, помогает иметь имена функций/информацию о расположении стека, да, но, конечно же, .NET имеет это (хотя можно калечить имена так, чтобы они были, по существу, числами ...). Разумеется, номера строк не повредят, и тем, кто вам нужен, нужно отладочная информация независимо от того. – SamB 2010-04-20 17:00:51

16

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

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

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

Нерешенные распределения памяти (утечки)

Кто делает большинство запросов реестр?

Диск пишет? и т. д.

+1

XPerf кажется отличным, но он не может работать на XP, ему нужны Vista или Server 2007 или новее. Питти - функциональность звучит очень здорово, захват стоп-капов, основанный на профилировании выборки, был бы удобен. – Suma 2008-10-04 13:39:26

+0

XPerf сильно зависит от обновленного ETW в Vista, одного из немногих известных улучшений в Vista/Server08. – user15071 2008-10-04 16:02:21

+0

argh .. да .. xp несовместимый. поэтому он запускается ... :( – 2009-01-12 01:45:49

2

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

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

4

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

3

Windows Driver Kit включает в себя неинкрементный профилировщик пробоотборника пользователя/ядра под названием "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.

11

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

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

1

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

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

Смежные вопросы