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


Повышение скорости реагирования приложения Для Windows

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

Пошаговое руководство по оптимизации взаимодействия для реагирования на поведение

Клиенты могут чувствовать, что запуск приложения, навигация по меню или загрузка страниц или содержимого замедляется. Они пришли ожидать быстрый, простой опыт, и мы поделились некоторыми шагами и рекомендациями, чтобы лучше понять эти ожидания ниже.

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

  1. Определите сценарий и добавьте события TraceLogging.

    Создайте список ключевых взаимодействий, которые пользователь будет проходить при использовании приложения, например запуск, открытие меню, переход на новую страницу и содержимое отрисовки и т. д. Для каждого из этих взаимодействий добавьте событие начала и остановите событие, которое будет использоваться для измерения и анализа. Узнайте больше о том, как добавить TraceLogging, формат для самостоятельного описания трассировки событий для Windows (ETW).

  2. Задайте цели на основе класса взаимодействия.

    Пользователи имеют различные ожидания для производительности и реагирования приложения в зависимости от типа взаимодействия. Например, как быстро запускается приложение и как быстро загружается страница. Подумайте о допустимом диапазоне истекшего времени, которое требуется пользователям для завершения ключевых взаимодействий в приложении. Это может быть от 200 миллисекунд (мс) до 5 секунд (с). Затем назначьте каждую задачу меткой класса взаимодействия с связанной целью. Ниже приведены некоторые основные рекомендации, а также рекомендации по включению пользовательского интерфейса для улучшения восприятия отклика:

Метка класса взаимодействия Восприятие пользователей Диапазон задержки Примеры Предлагаемый пользовательский интерфейс
Быстро Минимальная заметная задержка 100 – 200 миллисекунда Откройте панель приложений, щелкните правой кнопкой мыши меню
Интерактивный Быстрая, но не быстрая 300 – 500 мс Выход из приложения, отображение кэшированных результатов поиска
Пауза Не быстро, но чувствует себя адаптивным 500 мс – 1 с Переход на другую страницу, возобновление приложения из приостановленного состояния, отображение результатов поиска в Интернете Анимация входа (например, летать в новом содержимом) может использоваться для маскирования времени, необходимого для этого сценария.
Wait Не быстро из-за объема работы для сценария 1 – 3 с Запуск приложения Для заметки хода выполнения может использоваться курсор спиннинга или ожидания. Для маскирования времени, затраченного на этот сценарий, можно использовать как выход, так и анимацию входа (например, летать на новую страницу).
Долгое ожидание Больше не чувствует себя адаптивным 2 – 5 с Запуски крупных приложений (использование расширенного экрана-заставки), запуск видеопотока HD Отображается элемент "Загрузка пользовательского интерфейса", где это возможно, включает параметр "отмена" для пользователя. Пользовательский интерфейс загрузки должен отображаться в классе быстрого взаимодействия. Пользовательский интерфейс загрузки не должен отображать процент или время, оставшееся.
Пленник Долгое ожидание — зарезервировано для неизбежных длительных и сложных сценариев 5 – 10 с Системное имя входа Отображается диалоговое окно "Загрузка пользовательского интерфейса" или диалогового окна. По возможности включите параметр "отмена" для пользователя. Диалоговое окно должно отображаться в классе быстрого взаимодействия. Диалоговое окно должно отображать процент или время, оставшееся, если это обеспечит полезный контекст для пользователя.
Долгое время Длительные операции — пользователи, вероятно, будут многозадача (отключать во время операции) 10 – 30 с Установка новых компонентов или обновлений, скачивание больших файлов Пользовательский интерфейс должен быть разработан для отражения возможности многозадачности. Диалоговое окно хода выполнения должно отображаться, включая оценку завершения (процент, оставшееся время и т. д.). Кроме того, пользовательский интерфейс может полностью свести к минимуму и уведомить пользователя только о завершении сценария с помощью всплывающего уведомления.
  1. Чтобы проверить точную длительность конкретных взаимодействий, можно записать и проанализировать трассировку с помощью Windows Анализатор производительности (WPA).

    • Прежде чем записывать трассировку, получите тестовое устройство для простоя, открыв диспетчер задач и гарантируя, что загрузка ЦП меньше 5%. Это позволит свести к минимуму помех измерения и обеспечить разумные трассировки размера. Это поможет вам лучше изолировать взаимодействие, которое вы стремитесь измерить.

    • Чтобы записать трассировку, откройте командную строку (PowerShell или командную строку) в режиме администратора.

    • Введите команду: wpr -start GeneralProfile -filemode.

    • Запустите сценарий взаимодействия в приложении.

    • Введите команду: wpr -stop Trace.etl.

  2. Анализ трассировки и поиск возможностей улучшения.

    Проанализируйте длительность каждого взаимодействия с ключами, поддерживаемого приложением, открыв трассировку, которую вы только что захватили в Windows Анализатор производительности (WPA).

    • Чтобы открыть трассировку в WPA, в командной строке введите: wpa.exe Trace.etl
    • Разверните раскрывающийся список "Системное действие" и дважды щелкните "Универсальные события", чтобы открыть представление анализа.
    • Выберите ряд событий, связанный с приложением, и разверните раскрывающийся список "Имя поставщика", пока не сможете найти имя процесса, имени задачи и события, связанного с нужным взаимодействием с ключом. Длительность события взаимодействия будет указана в столбце "Время", а также в графе, где отображается длительность, время начала и время окончания.

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

    Анализ длительности события трассировки

Дополнительные ресурсы