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