Основные понятия и реализация Jetpack Compose
Тестирование производительности позволяет проверять и отслеживать эффективность приложения. Регулярно проводите тесты, чтобы анализировать и устранять проблемы с производительностью, а также следить за тем, чтобы недавние изменения не привели к регрессии.
Android предлагает две библиотеки и два подхода для анализа и тестирования различных ситуаций в приложении: Macrobenchmark и Microbenchmark.
Macrobenchmark
Библиотека Macrobenchmark измеряет более крупные взаимодействия с конечным пользователем, такие как запуск, взаимодействие с пользовательским интерфейсом и анимация. Библиотека позволяет напрямую управлять средой тестирования производительности. Он позволяет управлять компиляцией, а также запускать и останавливать приложение, чтобы напрямую измерять фактическое время запуска или прокрутки.
Библиотека Macrobenchmark внедряет события и отслеживает результаты извне тестового приложения, созданного с помощью ваших тестов. Поэтому при написании тестов производительности вы не вызываете код приложения напрямую, а перемещаетесь по приложению как пользователь.
Микротест
Библиотека Microbenchmark позволяет тестировать код приложения непосредственно в цикле. Он предназначен для измерения работы ЦП, которая оценивает наилучшую производительность, например, прогретый JIT и кэшированный доступ к диску, который вы можете увидеть с внутренним циклом или определенной горячей функцией. Библиотека может измерять только код, который вы можете вызвать напрямую изолированно.
Вот несколько примеров, когда сравнение с контрольными показателями может быть полезно:
- Когда приложению нужно обработать сложную структуру данных.
- Если в приложении есть ресурсоемкий алгоритм, который вызывается несколько раз во время работы.
Вы также можете измерить части пользовательского интерфейса. Например, вы можете измерить стоимость привязки элемента RecyclerView, время, необходимое для развертывания макета, или производительность прохода макета и измерения вашего класса View.
Однако вы не можете измерить, как контрольные случаи влияют на общее впечатление пользователя. В некоторых случаях тестирование производительности не позволяет определить, удалось ли вам устранить узкое место, например пропущенные кадры или время запуска приложения. Поэтому сначала важно выявить узкие места с помощью Android Profiler. После того как вы найдете код, который хотите исследовать и оптимизировать, можно запустить цикл тестирования несколько раз, чтобы получить более точные результаты. Это позволяет вам сосредоточиться на одной области улучшения.
Библиотека Microbenchmark сообщает информацию только о вашем приложении, а не о системе в целом. Поэтому он лучше всего подходит для анализа производительности в ситуациях, характерных для приложения, а не в тех, которые могут быть связаны с общими проблемами системы.
Сравнение библиотек для тестирования
| Macrobenchmark | Микротест | |
|---|---|---|
| Функция | Измеряйте высокоуровневые точки входа или взаимодействия, например запуск действия или прокрутку списка. | Измеряйте отдельные функции. |
| Область действия | Тестирование всего приложения вне процесса. | Тестирование работы ЦП. |
| Скорость | Средняя скорость итерации. Оно может превышать минуту. | Быстрая итерация. Обычно это занимает не более 10 секунд. |
| Трассировка | Результаты включают трассировку системы. | По умолчанию результаты содержат минимальную трассировку системы и трассировку метода. |
Рекомендуем
- Примечание. Текст ссылки показывается, когда JavaScript отключен.
- Как создать профиль базовой конфигурации {:#creating-profile-rules}
- Библиотека JankStats
- Общие сведения об оценке производительности приложений