Études de cas

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

Temps de lecture : 2 min

Monzo est une banque numérique britannique qui compte 15 millions de clients et qui ne cesse de se développer. À mesure que l'application s'est développée, l'équipe d'ingénierie a identifié le temps de démarrage de l'application comme un domaine d'amélioration essentiel, mais craignait que cela ne nécessite des modifications importantes de sa codebase.

En activant complètement les optimisations R8, Monzo a réduit de 35% son taux d'erreurs ANR (l'application ne répond pas). Ce simple changement a prouvé que les optimisations efficaces ne nécessitent pas toujours des efforts d'ingénierie complexes.

Améliorer les performances globales avec le mode complet de R8

Monzo a identifié le mode complet de R8 comme une solution simple à tester. Et cela a fonctionné, en améliorant les performances à tous les niveaux :

  • Fiabilité au démarrage : les démarrages à froid ont été améliorés de 30%, les démarrages tièdes 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 de 35 % des erreurs ANR.
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. Le principal changement apporté par Monzo pour améliorer les performances a été de remplacer le fichier proguard-android.txt par défaut 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 effectué cette modification, il est utile de consulter vos fichiers de configuration Keep. Ces fichiers indiquent à R8 quelles parties de votre code ne doivent pas être modifiées (généralement parce qu'elles sont appelées de manière dynamique ou par des bibliothèques externes). En supprimant les règles Keep inutiles, vous permettez à R8 d'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, ciblant spécifiquement les performances de défilement et d'affichage de son flux principal. Cette stratégie a permis d'optimiser entièrement les parcours utilisateur les plus courants : l'ouverture de l'application et le défilement du flux. L'impact sur l'affichage a été considérable : les performances de défilement P90 ont été améliorées de 71% et les performances de défilement P95 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 du profil de référence tous les jours de la semaine (avant d'exécuter nos builds automatiques) et nous validons les dernières modifications une fois l'opération terminée", explique Neumayer.

Suivre l'évolution du Modern Android Development

L'expérience de Monzo montre ce qu'il est possible de faire en restant à jour avec les recommandations d'Android concernant les outils de compilation. Alors que les anciennes applications ont souvent du mal à gérer l'utilisation complexe de la réflexion, Monzo a trouvé la transition simple en documentant correctement ses règles de conservation. "Nous ajoutons toujours un commentaire expliquant pourquoi les règles de conservation sont en place, afin de savoir quand nous pouvons les supprimer en toute sécurité", explique Neumayer.

Quels sont les conseils de Neumayer pour les autres équipes ? Vérifiez régulièrement que vos pratiques sont conformes aux normes actuelles : "Consultez les dernières recommandations de Google concernant les performances des applications et vérifiez que vous suivez tous les derniers conseils."

Pour vous lancer et en savoir plus sur R8, consultez https://d.android.com/r8.

Written by:
Continuer la lecture