Основные тесты производительности охватывают высокоуровневые пути пользователя в приложении, например запуск приложения или прокрутку в приложении Pokedex с открытым исходным кодом.
- Контрольные показатели запуска. Отслеживание времени от открытия приложения до показа контента.
- Тесты прокрутки. Измерение производительности прокрутки ленивой сетки с изображениями.
Настройка тестирования
- Выбор приложения. Мы провели эти тесты, используя приложение Pokedex с открытым исходным кодом, сравнивая его версии на основе View и на основе Compose. Приложение было выбрано для представления реальных сценариев и не разрабатывалось командой Compose.
- Аппаратная конфигурация. Тесты проводились на устройстве Pixel 6 с Android 17 (API 37) с заблокированными ЦП и графическим процессором. До версии Compose 1.12 тесты производительности проводились на Pixel 3a. Начиная с Compose 1.12, Pixel 6 используется в качестве стандартного контрольного значения производительности для основных тестов.
- Настройка сборки. Тесты производительности используют приложение, созданное в режиме выпуска с включенным R8. Приложение полностью скомпилировано заранее, чтобы снизить нестабильность, связанную с JIT-компиляцией.
- Выбор результатов. Чтобы обеспечить анализ наихудшего сценария, из результатов тестирования были исключены экстремальные выбросы и нерепрезентативный шум. Затем мы установили базовый уровень, выбрав медианные значения данных об эффективности верхней границы.
Контрольные показатели для стартапов
Для измерения времени запуска мы использовали PokedexStartupBenchmark. PokedexStartupBenchmark измеряет время, необходимое для того, чтобы приложение Pokedex стало видимым для пользователя.
Запуск приложения может происходить в одном из трех состояний: холодном, теплом или горячем. От этого зависит, как быстро приложение станет доступно пользователю. При холодном запуске приложение запускается с нуля. В этом тесте мы измеряем производительность запуска приложения в состоянии холодного старта. Рекомендуем всегда оптимизировать приложение, исходя из предположения о холодном запуске. Это также может повысить производительность теплых и горячих запусков.
Для оценки времени запуска приложения используются показатели Время до начальной отрисовки и Время до полной отрисовки.
Время до начальной отрисовки
Время до первого показа (TTID) – это время, которое требуется приложению для создания первого кадра, включая инициализацию процесса во время холодного запуска, создание действия во время холодного или теплого запуска и отображение первого кадра.
В PokedexStartupBenchmark Compose 1.12 не уступает Views по TTID при холодном запуске.
Время до полного показа
Время до полного отображения (TTFD) – это время, за которое приложение становится интерактивным. Это означает, что все данные загружены и отрисованы. Подробнее о времени до полного отображения…
В PokedexStartupBenchmark Compose 1.12 примерно на 2 % медленнее, чем Views для TTFD с холодным запуском.
Прокрутить контрольные показатели героев
Для измерения производительности прокрутки мы использовали PokedexScrollBenchmark. Он измеряет производительность прокрутки экрана приложения Pokedex для ленивой сетки с изображениями. В этом тесте весь экран прокручивается и пролистывается несколько раз, а также загружаются новые элементы. Эффективность прокрутки измеряется частотой задержек.
Доля кадров с задержкой
Устройства Android отрисовывают до 60 или 120 кадров в секунду. Это означает, что у системы есть строгий срок (например, 16,6 мс для 60 кадров/с) для создания кадра. Если приложение работает слишком медленно, это может привести к заметным задержкам, которые мы называем зависаниями.
В PokedexScrollBenchmark Compose соответствует производительности Views с 0 процентных пунктов избыточного зависания, начиная с Compose 1.9.0. На Pixel 6 (тестирование началось с Compose 1.11) и Compose, и Views достигают 0 % задержек.
Запустите тестирование основных показателей
Чтобы проверить результаты производительности и запустить тесты локально:
- Чтобы ознакомиться с исходным кодом, следуйте руководству по AndroidX.
- Следуйте инструкциям в файле README исходного кода Hero Benchmarks, чтобы создать тестовые и целевые APK-файлы (
pokedex-macrobenchmarkиpokedex-macrobenchmark-target), установить их на тестовое устройство и запустить наборыPokedexStartupBenchmarkиPokedexScrollBenchmarkс помощьюadbили Android Studio.
Вы можете запустить эти тесты на любом поддерживаемом устройстве, например на том, для которого вы оптимизируете свое приложение. Однако для проверки официальных результатов используйте ту же аппаратную конфигурацию.