Оптимизация приложений   для Windows Store                 Филипп Панфилов                 f.panfilov@corp.mail.ru        ...
Agenda• Для чего заниматься оптимизацией• Измерение и анализ производительности приложения• Общие рекомендации по оптимиза...
Для чего оптимизировать приложение? Быстродействие приложений                           Удовлетворенность                 ...
Когда оптимизировать приложение?               Разработка функции    Проектирование                  Оптимизация       Раз...
Измерение производительности приложений Включение счетчиков fps
Включение счетчиков fps                                             Время в UI потоке (мс)                                ...
Измерение производительности приложений Включение счетчиков fps Отображение карты перерисовок
Отображение карты перерисовокApp.Current.DebugSettings.IsOverdrawHeatMapEnabled = true;
Измерение производительности приложений Включение счетчиков fps Отображение карты перерисовок Использование профайлера
Использование профайлера
Использование профайлера
Общие рекомендации по оптимизации приложенийУскорение загрузки приложения
Ускорение загрузки приложения                                                    КонструкторПарсинг XAML         App()    ...
Общие рекомендации по оптимизации приложенийУскорение загрузки приложенияЭффективная работа с файловой системой
Общие рекомендации по оптимизации приложенийУскорение загрузки приложенияЭффективная работа с файловой системойПрожорливый...
Общие рекомендации по оптимизации приложенийУскорение загрузки приложенияЭффективная работа с файловой системойПрожорливый...
Правильный XAMLХраните в памяти только     Переиспользуйте  необходимые стили         одинаковые кисти   Минимизируйте    ...
Запуск приложенияUI thread                    Compositor thread1.   Парсинг XAML            1. Настройка устройства2.   Ве...
Правильные анимацииIndependent анимации                 Dependent анимации1. UI поток строит дерево анимации   1. UI поток...
Правильные анимации (2)Можно анимировать             Нельзя анимировать•   Canvas.Left, Canvas.Top   •   Width     ScaleTr...
Просчитывайте анимации1.   Производительность зависит от числа перерисованных пикселей2.   Лишние элементы в XAML – лишняя...
Филипп Панфиловразработчик, Почта@Mail.Ru  f.panfilov@corp.mail.ru
Panfilov
Upcoming SlideShare
Loading in …5
×

Panfilov

477 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
477
On SlideShare
0
From Embeds
0
Number of Embeds
83
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Panfilov

  1. 1. Оптимизация приложений для Windows Store Филипп Панфилов f.panfilov@corp.mail.ru @ponfius
  2. 2. Agenda• Для чего заниматься оптимизацией• Измерение и анализ производительности приложения• Общие рекомендации по оптимизации приложений• Правильный XAML и анимации
  3. 3. Для чего оптимизировать приложение? Быстродействие приложений Удовлетворенность пользователей Время автономной работы устройств
  4. 4. Когда оптимизировать приложение? Разработка функции Проектирование Оптимизация Разработка функции Разработка Разработка функции Проектирование приложения Оптимизация Разработка функции Разработка функции Проектирование Оптимизация Разработка функции Оптимизация … Оптимизация Релиз Релиз Релиз
  5. 5. Измерение производительности приложений Включение счетчиков fps
  6. 6. Включение счетчиков fps Время в UI потоке (мс) Время в потоке Compositor (мс) Количество пакетов, отправленных GPU Использование памяти fps UI потока fps потока CompositorApp.Current.DebugSettings.EnableFrameRateCounter = true;
  7. 7. Измерение производительности приложений Включение счетчиков fps Отображение карты перерисовок
  8. 8. Отображение карты перерисовокApp.Current.DebugSettings.IsOverdrawHeatMapEnabled = true;
  9. 9. Измерение производительности приложений Включение счетчиков fps Отображение карты перерисовок Использование профайлера
  10. 10. Использование профайлера
  11. 11. Использование профайлера
  12. 12. Общие рекомендации по оптимизации приложенийУскорение загрузки приложения
  13. 13. Ускорение загрузки приложения КонструкторПарсинг XAML App() App.OnLaunched() первой страницы
  14. 14. Общие рекомендации по оптимизации приложенийУскорение загрузки приложенияЭффективная работа с файловой системой
  15. 15. Общие рекомендации по оптимизации приложенийУскорение загрузки приложенияЭффективная работа с файловой системойПрожорливый MediaElement
  16. 16. Общие рекомендации по оптимизации приложенийУскорение загрузки приложенияЭффективная работа с файловой системойПрожорливый MediaElementОтзывчивый UI
  17. 17. Правильный XAMLХраните в памяти только Переиспользуйте необходимые стили одинаковые кисти Минимизируйте Для статичныхколичество элементов и элементов используйте число перерисовок BitmapCache
  18. 18. Запуск приложенияUI thread Compositor thread1. Парсинг XAML 1. Настройка устройства2. Верстка страницы 2. Преобразование кадра в3. Передача в Compositor команды для железа4. Выполнение кода 3. Передача команд железу
  19. 19. Правильные анимацииIndependent анимации Dependent анимации1. UI поток строит дерево анимации 1. UI поток строит дерево анимации2. Поток Compositor исполняет 2. Каждый кадр анимации анимацию компонуется в UI потоке и передается в Compositor 3. Compositor отрисовывает каждый кадр отдельно
  20. 20. Правильные анимации (2)Можно анимировать Нельзя анимировать• Canvas.Left, Canvas.Top • Width ScaleTransform.ScaleX• UIElement.Opacity • Height ScaleTransform.ScaleY• SolidColorBrush.Color • WebView WebViewBrush• RenderTransform• Projection
  21. 21. Просчитывайте анимации1. Производительность зависит от числа перерисованных пикселей2. Лишние элементы в XAML – лишняя работа GPU3. Для достижения 60 fps кадр должен успевать отрисоваться за 16 мс.4. За это время на ARM устройствах экран успевает перерисоваться 3-4 раза
  22. 22. Филипп Панфиловразработчик, Почта@Mail.Ru f.panfilov@corp.mail.ru

×