1 / 29

ЛУЧШИЕ ПРАКТИКИ ОБЕСПЕЧЕНИЯ ПРОИЗВОДИТЕЛЬНОСТИ WINDOWS STORE ПРИЛОЖЕНИЙ

ЛУЧШИЕ ПРАКТИКИ ОБЕСПЕЧЕНИЯ ПРОИЗВОДИТЕЛЬНОСТИ WINDOWS STORE ПРИЛОЖЕНИЙ. Станислав Павлов Microsoft. Производительность. Визуальная как пользователь ощущает скорость работы приложения Реальная ф ормальные параметры : CPU, память, диск, сеть, батарейка. Визуальная производительность.

eugene
Download Presentation

ЛУЧШИЕ ПРАКТИКИ ОБЕСПЕЧЕНИЯ ПРОИЗВОДИТЕЛЬНОСТИ WINDOWS STORE ПРИЛОЖЕНИЙ

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ЛУЧШИЕ ПРАКТИКИ ОБЕСПЕЧЕНИЯ ПРОИЗВОДИТЕЛЬНОСТИ WINDOWS STORE ПРИЛОЖЕНИЙ Станислав Павлов Microsoft

  2. Производительность • Визуальная • как пользователь ощущает скорость работы приложения • Реальная • формальные параметры: CPU, память, диск, сеть, батарейка

  3. Визуальнаяпроизводительность • Планирование UI и UX • Асинхронное программирование • перестать, наконец, блокировать UI поток • Анимация процесса ожидания

  4. Реальная производительность • Правильно построенный процесс • Понимание архитектуры работы и выбранного технологического стека • Использование подходящего инструментария

  5. Зачем это нужно?

  6. Не будут пользоваться приложением • Которое медленно запускается • Которое медленно реагирует на действия пользователя • Которое показывает анимацию рывками • Которое воспроизводит мультимедиарывками • Которое тратит батарейку

  7. Правильно построенный процесс • Учёт производительности на каждом этапе разработки • планирование, дизайн, разработка, тестирование • Чётко поставленные цели по измеряемым параметрам • Итеративное улучшение производительности • Тестирование приложений на целевых устройствах • Исследование, исправление, измерение

  8. Технологические варианты • XAML и C#/C++/VB.NET • HTML и JS • DirectX и С++

  9. XAML архитектура • Полностью переписана на С++ поверх DirectX • Мульти-поточная архитектурас улучшенной поддержкой многоядерности • потоки UI, Compositor, Worker

  10. XAML инструментарий • DebugSettings • EnableFrameRateCounter • IsOverdrawHeatMapEnabled • Visual Studio Performance Analyzer • xperf

  11. HTML архитектура • Используется движок Internet Explorer • WWA (Windows Web Applications) • Ограничения по безопасности • Взаимодействие с платформой (WinRT) • WinJS

  12. HTML инструментарий • Visual Studio Performance Analyzer • Visual Studio JavaScript Profiler • Memory • UI Responsiveness • HTML5 Performance Analyzer • xpref

  13. DirectX архитектура • Все Windows Store приложения используют DirectX для рендеринга • WWA и XAML оптимизированы для использования Dirext2D и Direct3D 11.1 • Direct2D и эффекты Direct2D полностью используют возможности Direct3D 11.1

  14. DirectX инструментарий • Встроенный в Visual Studio Performance Analyzer • Graphics Diagnostics • GPUView • xpref

  15. А теперь подробнее о XAML

  16. Три потока XAML • UI • пользовательский код, парсер, размещение (layout), рендеринг • Compositor • независимая анимация, построение сцены, взаимодействие с графической подсистемой • Worker • декодирование картинок, фоновая работа, асинхронныйввод/вывод …

  17. XAML операции разбиты на фреймы • UI работает сравнительно медленно • размещает «dirty» элементы • парситXAML для всех создаваемых объектов • рендерит видимые объекты в примитивы • Поток рендеринга работает на 60 FPS • обновляет значений анимации • вызывает команды отрисовки для примитивов • реализует независимую анимацию

  18. Запуск XAML приложения • UI поток • парсит • размещает • рендерит • запускает код приложения

  19. Возможные оптимизации • Уменьшить размер словарей ресурсов XAML • Уменьшить количество элементов • Использовать виртуализацию UI • Асинхронные запросы к веб-ресурсам

  20. На что смотреть • Microsoft-Windows-Immersive-Shell • PerfTracker_SplashScreen_AppShown • Microsoft-Windows-XAML • ParseXAML • Frame • Layout • MeasureElement

  21. Анимация • Зависимые • Дерево анимаций создаёт UI поток • Каждый кадр анимации генерируется в потоке UI и отсылается отдельно в Comositor • Compositor рендерит сцену • Независимые • Дерево анимаций создаёт UI поток • Compositor делает всё остальное

  22. Возможные оптимизации • Использовать независимую анимацию • Останавливать или удалять анимацию, если она больше не нужна или не видна • Использовать RenderTransformsвместо ширины, высоты или других свойств связанных с отображением объекта • Подумайте (2 раза) перед тем как использовать бесконечную анимацию

  23. Что ещё можно оптимизировать? • Масштабирование • не двигайте объекты по событиям Pointers • используйте ScrollView • не занимайте UI поток • используйте меньше элементов • используйте placeholders

  24. Что ещё можно оптимизировать? • Медиа • используйте полноэкранный режим без оверлея • напрямую устанавливайте размеры элемента MediaElementв Windows.Current.Bounds • освобождайте медиапотоки • размещайте другие элементы рядом, а не поверх видео • не используйте анимацию во время проигрывания видео • используйте MediaElement.PosterSource

  25. Что ещё можно оптимизировать? • Память • используйте виртуализацию • уменьшайте количество элементов • всегда используйте изображения нужного размера

  26. performance performanceperformance

  27. Контакты Стас Павлов Microsoft stas.pavlov@microsoft.com& @stasus blogs.msdn.com/stasus

More Related