Как измерить WPF Silverlight FPS или время рендеринга? - PullRequest
2 голосов
/ 15 февраля 2012

У меня есть элемент управления (для WPF и Silverlight), представленный в виде столбцов. (Небольшая диаграмма). Я хочу написать приложение, которое измеряет производительность этого элемента управления. Я пытаюсь добавить точки в цикле и жду, пока точка будет отрисована.

В WPF работают такие:

//start measuring time
for (int i =10, i<100, i++){
  chart.AddRandomPoint(i); //i - argument
  System.Windows.Forms.Application.DoEvents();
}
//finish measuring time

Но в Silverlight невозможно использовать System.Windows.Forms.Application.DoEvents ().

Второй способ - использование DispatcherTimer:

dicpatcherTimer_Tick(object sender, EventArgs e){
   chart.AddRandomPoint(i);
}

и подпишитесь на событие CompositionTarget.Rendering. В обработчике событий icrement counter. Большое значение этого счетчика показывает хорошую производительность.

Мой вопрос: Можно добавить точку, подождать, пока график будет отрисован, немедленно добавить еще одну точку и т. Д.

Является ли корректным второй способ (с использованием объекта DispatcherTimer и события CompositionTarget.Rendering). Может ли это показать производительность? (Мне нужно сравнить производительность до и после рефакторинга).

1 Ответ

0 голосов
/ 15 февраля 2012

Учитывая, что вы спрашиваете о WPF тоже , я бы посоветовал взглянуть на

WPF Performance Toolkit , особенно подумайте, что Перфоратор очень вам в этом поможет.

Хорошая статья о производительности WPF / Silverlight: Критическое глубокое погружение в систему рендеринга WPF

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