Jetpack Compose обеспечивает превосходную производительность «из коробки». Настройте свое приложение, используя лучшие практики, чтобы избежать распространенных ошибок и оптимизировать производительность вашего приложения Compose.
Сравнительный анализ производительности Jetpack Compose
Для проверки производительности Jetpack Compose по сравнению с Views мы используем эталонные тесты — тесты, которые фокусируются на важных реальных сценариях взаимодействия пользователя с приложением, таких как запуск приложения с нуля или прокрутка списка или сетки с изображениями. Мы проводим эти тесты с использованием приложения Pokedex с открытым исходным кодом, сравнивая его реализации Views и Compose .
Эти тесты показывают, что Compose 1.9 и более поздние версии демонстрируют производительность, сопоставимую с Views по показателю рывков при прокрутке.
Для получения дополнительных показателей и ознакомления с нашими методологиями см. раздел «Контрольные показатели Hero» .
Ключевые понятия
Вот некоторые ключевые концепции повышения производительности в Compose:
- Этапы : Понимание этапов композиции, компоновки и отрисовки имеет решающее значение для оптимизации процесса обновления пользовательского интерфейса с помощью Compose.
- Базовые профили : Эти профили предварительно компилируют основной код, что приводит к более быстрому запуску приложений и более плавному взаимодействию с ними.
- Стабильность : Повысьте стабильность вашего приложения, чтобы эффективнее пропускать ненужные перекомпоновки и улучшать производительность.
Правильно настройте ваше приложение.
Если ваше приложение работает плохо, возможно, проблема в конфигурации. Хорошим первым шагом будет проверка следующих параметров конфигурации:
- Сборка в режиме выпуска с R8: Попробуйте запустить ваше приложение в режиме выпуска . Режим отладки полезен для выявления многих проблем, но он снижает производительность и может затруднить обнаружение других проблем. Также следует включить оптимизацию и уменьшение размера в компиляторе R8, чтобы обеспечить производительную и эффективную сборку в режиме выпуска.
- Используйте базовые профили: Базовые профили повышают производительность за счет предварительной компиляции кода для критически важных пользовательских сценариев. Compose включает профиль по умолчанию, но в идеале следует создать и профиль, специфичный для приложения. Подробнее о базовых профилях можно узнать в общей документации по производительности Android.
Инструменты
Ознакомьтесь с набором инструментов , которые помогут вам измерить и проанализировать производительность вашего приложения Compose.
Передовые методы
При разработке приложения с помощью Compose учитывайте следующие рекомендации:
- Избегайте ресурсоемких вычислений : используйте
rememberдля кэширования результатов ресурсоемких вычислений. - Поддержка ленивых раскладок : Предоставьте стабильные клавиши для ленивых раскладок, используя параметр
key, чтобы свести к минимуму ненужные перекомпоновки. - Ограничьте ненужные перекомпозиции : используйте
derivedStateOf, чтобы ограничить перекомпозиции при быстром изменении состояния. - Отложенное чтение состояния : откладывание чтения состояния на максимально возможное время путем обертывания его в лямбда-функции.
- Используйте лямбда-модификаторы для изменения состояния : используйте лямбда-модификаторы, такие как
Modifier.offset { ... }для часто изменяющихся переменных состояния. - Избегайте обратной записи : никогда не записывайте данные в состояние, которое уже было прочитано в составном объекте.
Для получения более подробной информации см. руководство по передовым методам .
Мнения
Если вы работаете с представлениями (views) вместо Compose, обратитесь к специальному руководству по повышению производительности компоновки .
Дополнительные ресурсы
- Руководство по повышению производительности приложений : узнайте о лучших практиках, библиотеках и инструментах для улучшения производительности на Android.
- Проверка производительности : Проверьте производительность приложения.
- Бенчмаркинг : Оценка производительности приложения.
- Запуск приложения : Оптимизация запуска приложения.
- Базовые профили : Понимание базовых профилей.