Профилирование приложений WPF - краткое изложение всех методов - PullRequest
0 голосов
/ 02 ноября 2011

У меня проблемы с профилированием моего приложения WPF.

Вот такая ситуация: любой вариант использования будет следующим: введите значения -> нажмите «вычислить значения» -> загрузка ... ->отображаемые значения.

Во время фазы «Загрузка ...» есть две фазы:

  • Чистая математическая фаза, которая чрезвычайно оптимизирована
  • A "WPF рисует фазу управления ", которая ... ну ... долго.

Здесь я хочу профилировать приложение, чтобы иметь TreeView с: функцией, затраченным временем,количество звонков.Я обычно использую профилировщик Visual Studio (в основном потому, что моя компания не хочет платить за хороший профилировщик. Попросите людей оптимизировать производительность, не давайте им хорошего профилировщика, давайте просто вежливо скажем, что это хорошая политика компании).Проблема в том, что этот профилировщик не работает до тех пор, пока системные функции WPF (draw, MeasureOverride, measureLength ....).

Я некоторое время использовал dotTrace JetBrains (10-дневная пробная версия ... meh), чтодействительно потрясающе, так как он был в состоянии действительно разделить фазы даже в самых точных ситуациях (время, затраченное на окрашивание одной ячейки в сетке данных, время, затраченное на вычисление ширины одной ячейки ...).Не похоже, что Ants профилирует WPF (он просто отображает «Управляемый код» ...)

Так что сейчас мой профилировщик Visual Studio останавливается на функции, которая определяет Xaxis для диаграммы Visiblox.Это просто говорит мне, что WPF требуется около 2,3 секунд, чтобы «определить XAxis», в то время как 2,3 секунды - это фактически все время, потраченное на рисование всех моих сеток и графиков

Вы, ребята, знаете, случайнопрофилировщик (или настройка в VS profiler), который может творить чудеса?

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 02 ноября 2011

Вы можете использовать Windows SDK WPF Performance Suite

0 голосов
/ 03 ноября 2011

Застрял запись здесь. Вы думаете, что хотите просмотреть дерево с истекшим временем, счетчиком вызовов и т. Д., но вам нужно оптимизировать приложение, найдя то, что вы можете исправить, чтобы исключить ненужное время, затрачиваемое на настенные часы. Вот пример того, что работает лучше всего, по моему опыту.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...