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

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

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

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

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

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

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

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

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

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

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

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

Сравнение библиотек для бенчмаркинга

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