Использование Windows Performance Analysis Tool в качестве профилировщика

У меня есть приложение, написанное на C ++ с использованием Visual Studio 2005. У приложения есть определенные проблемы с производительностью. Я хотел бы узнать где. Мне нужно детализировать, в каких классах / методах / строках приложение проводит большую часть времени. Можно ли это сделать с помощью WPA? Если да, то дайте мне ссылку на документацию?


person danatel    schedule 01.02.2010    source источник


Ответы (3)


Нет, WPT использует события Windows, это поможет вам диагностировать проблему только тогда, когда Windows является причиной вашего замедления. Вы точно не получите никакой диагностики для своего кода. Что вам нужно, так это настоящий профайлер. Хорошие стоят денег. Дополнительные советы см. В этой ветке.

person Hans Passant    schedule 01.02.2010
comment
Спасибо. Я отчаянно пытался заставить WPT читать мои таблицы символов. - person danatel; 01.02.2010

Самый простой способ узнать, на что тратится время без надобности - это stackshots, которые можно легко получить с помощью кнопки« пауза »в Visual Studio.

Вам не нужно мерить; все, что вам нужно сделать, это поймать это с поличным. Если вы обнаружите, что он что-то делает на двух или более стеках, и этого можно избежать, вы значительно сэкономите время. И вы можете повторить процесс, потому что сначала небольшие проблемы будут «всплывать», когда вы устраните другие проблемы.

person Mike Dunlavey    schedule 01.02.2010
comment
Хороший совет, но не подходит для моей ситуации. Приложение хорошо работает в окнах (99% времени ожидания ввода пользователя), проблемы с производительностью видны только во встроенной системе с гораздо более медленным процессором, для которой у меня вообще нет отладчика / профилировщика. Хороший профайлер может помочь, так как он может различать от 0,5% до 0,05% времени. - person danatel; 01.02.2010
comment
Что я делаю в этом случае, так это оборачиваю цикл (10x или 100x) вокруг каждой части обработки, управляемой пользовательским интерфейсом, чтобы лучше понять, что происходит. Это имеет тот же эффект, что и замедление процессора. Настройте код на минимальное время, затем удалите цикл. - person Mike Dunlavey; 02.02.2010

Попробуйте профилировщик YourKit .net. Я пробовал это и несколько других недавно, но это был единственный, который мне удалось заставить работать с моим проектом C ++ / CLI (со смесью управляемого и неуправляемого кода).

[Edit] Ой! Я читал WPA как WPF и предполагал, что вы хотите профилировать некоторый код .net.

person Jon Cage    schedule 01.02.2010