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