Поделиться через


Анализ скорости реагирования пользовательского интерфейса в приложениях Магазина (XAML)

Применимо к Windows и к Windows Phone

Профилировщик Скорость реагирования ИП XAML для приложений Магазина позволяет выявлять и устранять проблемы с производительностью, связанные с обработкой и отрисовкой XAML. С помощью этого инструмента можно анализировать, например, следующие проблемы: длительное время запуска и навигации, скачкообразные сдвиг и прокрутка, задержки при обработке ввода данных пользователем.

Примечание

Вы можете собрать и проанализировать данные об использовании ЦП и энергопотреблении, а также данные о скорости реагирования пользовательского интерфейса XAML.См. раздел Запуск средств анализа производительности на странице "Производительность и диагностика".

Содержимое

Определение сценариев с помощью пользовательских отметок

Сбор данных о скорости реагирования ИП для приложения

Сбор данных о скорости реагирования ИП для установленного приложения

Анализ данных о скорости реагирования пользовательского интерфейса

Оптимизация скорости реагирования XAML

Определение сценариев с помощью пользовательских отметок

Можно добавлять пользовательские деления в данные профилирования для облегчения идентификации областей на линейке временной шкалы.

Пользовательские отметки на временной шкале

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

Для добавления пользовательского деления в код C#, Visual Basic, C++ сначала создайте объект Windows.Foundation.Diagnostics LoggingChannel. Затем добавьте вызовы методов LoggingChannel.LogMessage в тех местах кода, которые требуется отметить. Используйте LoggingLevel.Information в вызовах.

При выполнении метода пользовательская отметка добавляется в данные профилирования вместе с сообщением.

Примечание

  • Windows.Foundation.Diagnostics.LoggingChannel реализует интерфейс Windows.Foundation.IClosable (проецируемый как System.IDisposable в C# и VB). Во избежание утечки системных ресурсов выполните вызов Dispose() по завершении работы с каналом ведения журнала.

  • Каждый открытый канал ведения журнала должен иметь уникальное имя.Попытка создания нового канала ведения журнала с именем, совпадающим с именем неудаленного канала, приводит к возникновению исключения.

См. пример Windows SDK LoggingSession Sample.

Сбор данных о скорости реагирования ИП для приложения

Профилировать скорость реагирования приложения можно на устройстве с Visual Studio, в эмуляторах или имитаторе Visual Studio, а также на удаленном устройстве. См. раздел Выполнение приложений Магазина из Visual Studio. Основные шаги перечислены ниже.

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

    Запуск в имитаторе

  2. При профилировании на планшете или компьютере, которые не являются компьютером с Visual Studio, настройте проект для удаленного профилирования. См. раздел Запуск приложений для Магазина Windows на удаленном компьютере из Visual Studio.

  3. В меню Отладка выберите Производительность и диагностика.

    Выбор профилировщика XAML в концентраторе диагностики

  4. Выберите Скорость реагирования ИП XAML, а затем — Запуск.

    Примечание

    При запуске профилировщика Скорость реагирования ИП XAML может появиться окно "Контроль учетных записей" с запросом разрешения на запуск файла VsEtwCollector.exe.Выберите Да.

  5. Запустите приложение для сбора данных.

    Совет

    Запустите приложение непосредственно на устройстве.Производительность приложения, наблюдаемая в имитаторе или при подключении к удаленному рабочему столу, может не отражать фактическую производительность на устройстве.

  6. Чтобы остановить профилирование, вернитесь в Visual Studio (ALT+TAB) и выберите Остановка сбора на странице Производительность и диагностика.

    Остановка сбора данных

    Visual Studio анализирует собранные данные и отображает результаты.

    Страница отчета о скорости реагирования пользовательского интерфейса XAML

Сбор данных о скорости реагирования ИП для установленного приложения

Профилировщик Скорость реагирования ИП XAML можно запускать только для приложений для Магазина Windows 8.1, запущенных из решения Visual Studio или установленных из Магазина Windows. Когда в Visual Studio открыто какое-либо решение, целевым объектом по умолчанию является Запускаемый проект. Профилировать скорость реагирования XAML можно для установленного приложения на локальном или удаленном на устройстве без открытого решения.

Для нацеливания на установленное приложение:

  1. Выберите Изм. конечн. объект и выберите Установленное приложение.

    Список изменения целевого объекта

  2. Удаленное профилирование. Для запуска профилировщика скорости реагирования XAML на удаленном устройстве на этом устройстве должны быть установлены и запущены инструменты удаленной отладки Visual Studio. См. раздел Запуск приложений для Магазина Windows на удаленном компьютере из Visual Studio.

    В диалоговом окне Выберите установленный пакет приложения выберите Удаленный компьютер и укажите удаленное устройство.

    Выбор установленного пакета приложения для удаленного устройства

  3. В списке Пакеты приложений, установленные для текущего сеанса выберите целевое приложение.

    Диалоговое окно "Выберите установленный пакет приложения"

  4. Выберите Скорость реагирования ИП XAML на странице "Производительность и диагностика".

  5. Выберите Начать, чтобы начать профилирование.

Чтобы остановить профилирование, вернитесь в Visual Studio (использовав сочетание клавиш Alt + Tab) и на странице "Концентратор диагностики" выберите Остановка сбора.

Анализ данных о скорости реагирования пользовательского интерфейса

Diagnostic session timeline**|UI Thread utilization|Visual throughput (FPS)|Parsing view|**Hot Elements view

После сбора данных профилирования можно выполнить следующие действия для запуска анализа.

  1. Просмотрите информацию на диаграммах Использование потока пользовательского интерфейса и Пропускная способность визуализации (кадров/с), а затем с помощью панелей навигации на временной шкале выберите диапазон времени, который требуется проанализировать.

  2. С учетом информации на диаграммах Использование потока пользовательского интерфейса и Пропускная способность визуализации (кадров/с) изучите сведения в представлениях Синтаксический анализ и Активные элементы, чтобы определить возможные причины каких-либо проблем со скоростью реагирования.

Временная шкала диагностического сеанса

Временная шкала производительности и диагностики

На линейке в верхней части страницы Производительность и диагностика отображается временная шкала для профилируемой информации. Эта шкала относится и к диаграмме Использование потока пользовательского интерфейса, и к диаграмме Пропускная способность визуализации. Область отчета можно сузить, перетащив панели навигации на временной шкале, чтобы выбрать ее сегмент.

На шкале также отображаются все вставленные пользовательские отметки, а также события активации жизненного цикла приложения.

Использование потока пользовательского интерфейса

График использования ЦП потоком ИП

На диаграмме Использование потока пользовательского интерфейса (%) показана относительная часть времени, затраченная в потоке пользовательского интерфейса для следующих категорий:

Синтаксический анализ

Указывается время, затраченное в потоке пользовательского интерфейса на синтаксический анализ кода XAML и получение ресурсов приложения.

Макет

Указывается время, затраченное в потоке пользовательского интерфейса на размещение элементов XAML.

Код приложения

Показано время, затраченное в потоке пользовательского интерфейса на выполнение кода приложения (пользовательского), не связанного с синтаксическим анализом или построением макета.

Другие XAML

Указывается время, затраченное в потоке пользовательского интерфейса на исполнение кода среды выполнения XAML.

Пропускная способность визуализации (кадров/с)

Линейчатый график пропускной способности визуализации

График Пропускная способность визуализации (кадров/с) показывает число кадров в потоке пользовательского интерфейса и компоновки для приложения. Эти значения совпадают со значениями, отображаемыми в хроме приложения при включенном счетчике EnableFrameRateCounter.

Представление "Синтаксический анализ"

Окно синтаксического анализа

Представление Синтаксический анализ содержит горизонтальную линейчатую диаграмму файлов XAML, которые загружаются и обрабатываются в выбранной части временной шкалы. Дочерние элементы узла файлов XAML — это файлы, включенные в файл узла. Узлы перечисляются в том порядке, в котором они были загружены. Эти значения для выбранного файла отображаются на панели сведений.

Инклюзивные и эксклюзивные значения

Длительность (исключительная)

Время, необходимое для обработки элементов, явно определенных в данном узле.

Длительность (включительная)

Время, необходимое для обработки элементов, определенных в данном узле и во всех дочерних узлах.

Элементы интерфейса (исключительно)

Число элементов, явно определенных в данном узле.

Элементы интерфейса (включительно)

Число элементов, явно определенных в данном узле и во всех дочерних узлах.

Представление "Активные элементы"

Окно "Активные элементы"

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

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

Оптимизация скорости реагирования XAML

Один из лучших источников информации по оптимизации производительности приложения — подразделы раздела Performance best practices for Windows Store apps using C++, C#, and Visual Basic.

Ниже приведены некоторые сведения по оптимизации производительности XAML.

Оптимизация запуска и перемещения по страницам

Запуск приложения и перемещение по его страницам можно ускорить, тщательно проанализировав загружаемые страницами файлы XAML, файлы ресурсов и файлы данных. Приложение может работать медленно, если: а) файлы XAML создают большое число ненужных при первой загрузке страницы элементов пользовательского интерфейса или содержат ссылки на них; б) загружаются файлы ресурсов, содержащие ссылки на шаблоны и стили, не применимые для текущей страницы; или в) один и тот же файл XAML или файл ресурсов загружается несколько раз. Описание способов решения этих проблем см. в одном из следующих разделов:

Оптимизация сдвига и прокрутки

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

Оптимизация скорости реагирования на ввод данных

Описание способов решения проблем см. в разделе Keep the UI thread responsive (Windows Store apps using C#/VB/C++ and XAML).