Истории успеха

Как компания Monzo улучшила показатели эффективности на 35% благодаря простому обновлению R8

Время на чтение: 2 минуты
Посмотреть профиль Бена Вайса Посмотреть профиль пользователя Tracy Agyemang
Ben Weiss и Tracy Agyemang

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

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

Как повысить производительность с помощью полного режима R8

Monzo определил полный режим R8 как простое решение, которое стоит попробовать. И это сработало, улучшив производительность по всем направлениям:

  • Надежность запуска. Холодный запуск стал быстрее на 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 удалось легко перейти на R8 благодаря правильному документированию правил Keep. "Мы всегда добавляем комментарий с объяснением, почему действуют правила хранения, чтобы знать, когда их можно будет безопасно удалить", – отмечает Ноймайер.

Что Ноймайер советует другим командам? Регулярно проверяйте, соответствуют ли ваши методы текущим стандартам: "Ознакомьтесь с последними рекомендациями Google по производительности приложений и проверьте, следуете ли вы им".

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

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