Études de cas

Monzo améliore ses métriques de performances jusqu'à 35 % grâce à une simple mise à jour de R8

2 minutes de lecture
Ben Weiss
Ingénieur en relations avec les développeurs

Monzo est une banque numérique britannique qui compte 15 millions de clients et dont le nombre ne cesse d'augmenter. Au fur et à mesure que l'application évoluait, l'équipe d'ingénierie a identifié le temps de démarrage de l'application comme un domaine essentiel à améliorer, mais craignait que cela ne nécessite des modifications importantes de sa base de code.

En activant pleinement les optimisations R8, Monzo a réduit de 35 % le taux d'erreurs "Application ne répond pas" (ANR). Ce simple changement a prouvé que les optimisations efficaces ne nécessitent pas toujours des efforts d'ingénierie complexes.

Des gains de performances importants grâce au mode complet de R8

Monzo a identifié le mode complet de R8 comme une solution simple à essayer. Cela a fonctionné et a amélioré les performances de manière générale :

  • Fiabilité du démarrage : les démarrages à froid ont été améliorés de 30 %, les démarrages à chaud de 24 % et les démarrages à chaud de 14 %.
  • Vitesse de lancement : les temps de lancement P50 ont été améliorés de 11 % et les temps de lancement P90 de 12 %.
  • Efficacité : la taille globale de l'application a été réduite de 9 %.
  • Stabilité : réduction des erreurs ANR de 35 %.
AANDDM_Monzo_Quote-1.png
large_AANDDM_Monzo_Quote-2.png

Activer les optimisations en une seule modification

De nombreuses applications Android utilisent un fichier de configuration par défaut obsolète qui désactive la plupart des fonctionnalités de l'optimiseur R8. La principale modification apportée par Monzo pour débloquer ces améliorations de performances a consisté à remplacer le fichier par défaut proguard-android.txt par proguard-android-optimize.txt. Cette modification supprime l'instruction -dontoptimize et permet à R8 de fonctionner correctement.

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

Après avoir apporté cette modification, il est intéressant d'examiner vos fichiers de configuration Keep. Ces fichiers indiquent à R8 les parties de votre code à laisser de côté (généralement parce qu'elles sont appelées de manière dynamique ou par des bibliothèques externes). En simplifiant les règles Keep inutiles, R8 peut en faire plus.

Améliorer les performances de défilement avec les profils de référence

Pour améliorer encore l'expérience utilisateur, Monzo a implémenté des profils de référence, en ciblant spécifiquement les performances de défilement et de rendu dans son flux principal. Cette stratégie a permis de s'assurer que les parcours utilisateur les plus courants (ouverture de l'application et défilement du flux) étaient entièrement optimisés. L'impact sur le rendu a été considérable : les performances de défilement P90 ont été 71 % plus rapides et les performances de défilement P95 ont été améliorées de 87 %. Le défilement dans l'application est désormais plus fluide qu'auparavant.

Monzo a intégré cette fonctionnalité à son processus de publication pour maintenir ces améliorations au fil du temps. "Nous déclenchons la génération de profils de référence tous les jours de la semaine (avant d'exécuter nos builds nocturnes) et nous validons les dernières modifications une fois qu'elles sont terminées", explique Neumayer.

Se tenir au courant du développement Android moderne

L'expérience de Monzo montre ce qu'il est possible de faire lorsque vous vous tenez au courant des recommandations concernant les outils de compilation Android. Alors que les applications héritées ont souvent du mal à utiliser la réflexion complexe, Monzo a trouvé la transition simple en documentant correctement ses règles Keep. « Nous ajoutons toujours un commentaire expliquant pourquoi les règles Keep sont en place, afin de savoir quand il est possible de les supprimer », note Neumayer.

Quel conseil Neumayer donnerait-il aux autres équipes ? Vérifiez régulièrement vos pratiques par rapport aux normes actuelles : "Consultez les dernières recommandations de Google concernant les performances des applications et vérifiez si vous suivez tous les derniers conseils."

Pour commencer et en savoir plus sur R8, accédez à https://d.android.com/r8.

Auteur :

Lire la suite