Бывает сложно понять, в чем заключается проблема с производительностью и какой код нужно оптимизировать. Сначала воспользуйтесь инструментами, которые помогут определить, где именно возникла проблема.
Инспектор макетов
Используйте инспектор макетов, чтобы проверить макет и посмотреть количество рекомпозиций.
Если у вашего интерфейса низкая производительность, это часто связано с ошибкой кодирования, которая заставляет ваш интерфейс чрезмерно перекомпоновываться. С другой стороны, некоторые ошибки в коде могут помешать рекомпозиции пользовательского интерфейса, когда это необходимо, а это означает, что изменения пользовательского интерфейса не отображаются на экране. Отслеживание рекомпозиций может помочь найти оба типа проблем.
Рекомпозиция сама по себе не является плохой; однако неожиданная рекомпозиция может стать проблемой. Помните, что количество рекомпозиций не заменяет собой тесты производительности. Пропуск composable-функции приводит к дополнительным затратам на сравнение параметров и таблицы слотов. Кроме того, если композиция уже запланирована, пропуск одной промежуточной composable-функции экономит мало времени по сравнению с откладыванием быстро меняющихся операций чтения состояния до этапов макета или отрисовки. Всегда проверяйте изменения производительности с помощью трассировки композиции и Macrobenchmark.
Дополнительную информацию можно найти в документации по количеству рекомпозиций в инспекторе макетов.
Трассировка композиции
Используйте трассировку композиции, чтобы отслеживать composable-функции в трассировке системы. Трассировка – это лучший источник информации для начала работы над проблемой производительности. Они позволяют сформировать гипотезу о том, в чём заключается проблема и с чего начать поиск.
Дополнительные ресурсы
- Руководство по производительности приложений. Узнайте о рекомендациях, библиотеках и инструментах, которые помогут повысить производительность приложений для Android.
- Проверить производительность. Проверьте производительность приложения.
- Сравнение по контрольным показателям. Сравнивайте производительность приложения.
- Запуск приложения. Оптимизируйте запуск приложения.
- Профили базовой конфигурации. Узнайте, что такое профили базовой конфигурации.