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

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

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

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

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

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

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

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

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

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

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

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

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