Posted on 15. February 2010

Профилирование Silverlight приложений

Производительность приложения является одним из ключевых показателей ее работоспособности. Показатель произвводительности включает в себя такие параметры как процессорное время, которое приложение использует для вычислительных операций, размер оперативной памяти и др. При разработке приложения работать над улучшением указанных параметров можно постоянно или через определенные итерации. При этом необходимо четко представлять какие операции происходят внутри приложения. И здесь на помощь приходят различного рода диагностирующие интрументы. Далеко ходить не надо, взять хотя бы Visual Studio.

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

Начну пожалуй из встроеных возвожностей Silverlight’a. При расположении приложения на странице тегу object можно указать несколько параметров:

  • EnableRedrawRegions – включает отображение участков Silverlight приложения, которые обновляются при каждой перерисовке фрейма.
  • MaxFrameRates – устанавлявает максимальное количество фреймов для отрисовки в секунду.
  • EnableFrameRateCounter – включает отображение счетчика отрисованых фреймов в статус панеле(только для IE).

Теперь перейдем к обзору инструментов. Будем профилировать клиент Facebook’а.

UI Spy.

 Является частью Windows SDK. Позволяет увидеть часть компонентов пользовательского интерфейса в виде дерева. Что бы увидеть определенный элемент в жереве, достаточно расположить курсор мыши над ним и нажать клавишу Ctrl. Результат:

  IU Spy

 

XPerf

 Тоже является частью Windows SDK, а точнее Windows Performance Analysis Tools. Данный инструмент позволяет узнать показатели использования системных ресурсов. Показатели снимаются со всей системы. Нет ограничения по процессам. Поэтому при его использовании рекумендуется запускать минимум сторонныих процессов. Для диагностики с помощью XPerf необходимо проделать следующие шаги:

  1. Запустить командную строку с правами администратора
  2. Установить адрес сервера сцепю символов для отображения отладочной информации: C:\Windows\system32>set _NT_SYMBOL_PATH= srv*C:\Symbols*http://msdl.microsoft.co
    m/downloads/symbols
  3. Запустить XPerf: C:\Windows\system32>xperf -on base
  4. Около 10-ти секунд будет инициализироваться инструмент после чего можно проганять Silverlight приложение.
  5. Затем останавливаем логирование и результаты пишем в файл: C:\Windows\system32>xperf -d facebook.etl
  6. Что бы посмотреть на результаты откроем их в XPerfview: C:\Windows\system32>xperfview facebook.etl

В результате откроется окно с графиками:

 Windows Performance Analyzer

 Необходимо из главного меню загрузить символы отладки: Trace -> Load Symbols

Выделяем участок графика, который нас интересует 

 Windows Performance Analyzer

и выбираем “Summary Table” пункт контекстного меню. Откроется окно с детальным описание какой процесс сколько использовал системных ресурсов (процессор в данном варианте):

CPU Sampling Summary Table

 

Как вы могли заметить в некоторых ячейках содержится значение Unknown. Дело в том, что XPerf поддерживается версиями Silverlight 1-3. У меня же установлена Silverlight 4 Beta.

 

Silverlight Spy

Silverlight Spy мощнее предыдущих инструментов, но он платный. Позволяет:

  • увидеть дерево элементов управления;
  • отслеживать события;
  • мониторить обращение приложения к серверу;
  • мониторить использование ресурсов компьютера приложением;
  • и др.

 

Silverlight Spy

 

 

Visual Studio 2010

Профилирование в “сыром виде” присутствует с Beta 2. Детальнее читайте PDC video, TechEd Iceland, VS2010, profiling, Silverlight 4.

 

EQATEC

Инстумент платный. Возможности можно увидеть здесь.

 

Как видите существует набор инстументов для профилирования Silverlight  приложений, хотя они покрывается не всё. Но данное направления еще только развивается. Еще хочу порекомендовать доклад по профилированию с PDC10.