Протестируйте свое приложение

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

Android предлагает две библиотеки и подходы для анализа и тестирования различных ситуаций в вашем приложении: Macrobenchmark и Microbenchmark.

Макробенчмарк

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

Библиотека Macrobenchmark вводит события и отслеживает результаты извне из тестового приложения, созданного с помощью ваших тестов. Таким образом, при написании бенчмарков вы не вызываете код своего приложения напрямую, а перемещаетесь внутри своего приложения как пользователь.

Микробенчмарк

Библиотека Microbenchmark позволяет вам тестировать код приложения непосредственно в цикле. Она предназначена для измерения работы ЦП, которая оценивает производительность в лучшем случае — например, разогретый Just in Time (JIT) и кэшированные обращения к диску — которые вы можете увидеть с помощью внутреннего цикла или определенной горячей функции. Библиотека может измерять только тот код, который вы можете вызвать напрямую изолированно.

Если вашему приложению необходимо обрабатывать сложную структуру данных или иметь какой-то конкретный алгоритм с большим объемом вычислений, который вызывается несколько раз во время работы приложения, это может быть хорошими случаями для бенчмаркинга. Вы также можете измерить части своего пользовательского интерфейса. Например, вы можете измерить стоимость привязки элемента RecyclerView , сколько времени требуется для раздувания макета или насколько требователен проход макета и измерения вашего класса View с точки зрения производительности.

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

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

Сравнение библиотек эталонных тестов

Макробенчмарк Микробенчмарк
API-версия 23 и позже 14 и позже
Функция Измеряйте высокоуровневые точки входа или взаимодействия, такие как запуск действия или прокрутка списка. Измерение отдельных функций.
Объем Внепроцессное тестирование полного приложения. Технологический тест работы ЦП.
Скорость Средняя скорость итерации. Может превышать минуту. Высокая скорость итерации. Часто менее 10 секунд.
Трассировка Результаты сопровождаются трассами профилирования. Дополнительный метод отбора проб и отслеживания.
{% дословно %} {% endverbatim %} {% дословно %} {% endverbatim %}