Примеры из практики

Monzo повышает показатели производительности до 35% благодаря простому обновлению до R8.

2 минуты чтения
Ben Weiss
Инженер по связям с разработчиками

Monzo — это британский цифровой банк с 15 миллионами клиентов, и их число продолжает расти. По мере масштабирования приложения команда разработчиков определила время запуска приложения как критическую область для улучшения, но опасалась, что это потребует значительных изменений в коде.

Благодаря полному включению оптимизаций R8, Monzo добилась колоссального снижения на 35% количества сообщений о неответе приложений (ANR). Это простое изменение доказало, что для эффективной оптимизации не всегда требуются сложные инженерные решения.

Раскройте потенциал повышения производительности с помощью полного режима R8.

Компания Monzo определила режим R8 Full как простое и полезное решение, и оно сработало, улучшив производительность по всем параметрам:

  • Надежность запуска: холодный запуск улучшился на 30%, теплый запуск — на 24%, а горячий запуск — на 14%.
  • Скорость запуска: время запуска P50 улучшилось на 11%, а время запуска P90 — на 12%.
  • Эффективность: общий размер приложения уменьшился на 9%.
  • Стабильность: снижение ANR на 35%.
AANDDM_Monzo_Quote-1.png
large_AANDDM_Monzo_Quote-2.png

Включение оптимизации с помощью одного изменения

Многие приложения для Android используют устаревший файл конфигурации по умолчанию, который отключает большую часть функциональности оптимизатора R8. Главное изменение, внесенное Monzo для разблокировки этих улучшений производительности, заключалось в замене файла proguard-android.txt по умолчанию на proguard-android-optimize.txt . Это изменение удаляет инструкцию -dontoptimize и позволяет R8 корректно выполнять свою работу.

buildTypes {
  release {
    isMinifyEnabled = true
    isShrinkResources = true
    proguardFiles(
      getDefaultProguardFile("proguard-android-optimize.txt"),
    )
  }
}

После внесения этих изменений стоит проверить файлы конфигурации Keep. Эти файлы указывают R8, какие части вашего кода следует оставить без изменений (обычно потому, что они вызываются динамически или внешними библиотеками). Упорядочивание ненужных правил Keep позволит R8 выполнять больше задач.

Улучшение производительности прокрутки с помощью базовых профилей.

Для дальнейшего улучшения пользовательского опыта Monzo внедрила базовые профили , специально ориентированные на производительность прокрутки и отрисовки основной ленты. Эта стратегия обеспечила полную оптимизацию наиболее распространенных сценариев использования приложения — открытия приложения и прокрутки ленты. Влияние на отрисовку было существенным: производительность прокрутки по P90 увеличилась на 71%, а по P95 — на 87%. Теперь прокрутка приложения стала плавнее, чем раньше.

Monzo внедрила это в свой процесс выпуска, чтобы поддерживать эти улучшения с течением времени. «Мы запускаем генерацию базового профиля каждый будний день (перед запуском наших ночных сборок) и фиксируем последние изменения после их завершения», — объясняет Ноймайер.

Идем в ногу с современными разработками Android.

Опыт Monzo показывает, чего можно достичь, если следить за рекомендациями по инструментам сборки Android. В то время как устаревшие приложения часто испытывают трудности со сложным использованием рефлексии, Monzo сочла переход простым благодаря правильному документированию своих правил сохранения (Keep Rules). «Мы всегда добавляем комментарий, объясняющий, почему действуют правила сохранения, чтобы знать, когда безопасно их удалить», — отмечает Ноймайер.

Совет Ноймайера другим командам? Регулярно проверяйте соответствие своих методов современным стандартам: «Ознакомьтесь с последними рекомендациями Google по производительности приложений и проверьте, следуете ли вы всем последним советам».

Чтобы начать работу и узнать больше об R8, посетите https://d.android.com/r8

    Автор:

    Продолжить чтение