Optimisation guidée par profil pour le démarrage des applications Android
Nous avons réduit le démarrage à froid (cold start) de notre application Android de 1,2 s à 380 ms.
La plupart des applications fonctionnent en mode de compilation le plus lent lors du premier lancement. Android utilise le mode « interprétation seule » (interpret-only) lorsqu'un utilisateur installe votre application pour la première fois. Cela ralentit le démarrage. Le système n'optimise le code que lors des périodes d'inactivité ultérieures.
Vous pouvez corriger cela en utilisant un pipeline en trois étapes.
Générer des Baseline Profiles Les Baseline Profiles indiquent au système quelles classes compiler lors de l'installation. Utilisez Macrobenchmark pour les créer dans votre pipeline CI. Nos profils couvraient 12 % des méthodes mais géraient 94 % du temps de démarrage.
Activer le réordonnancement du layout DEX (DEX Layout Reordering) Il s'agit d'une seule ligne dans vos propriétés Gradle. Cela indique à R8 de regrouper les classes de démarrage dans votre fichier DEX. Cela réduit les défauts de page (page faults) de 30 % à 50 %. Lorsque les classes sont regroupées, le système charge moins de données inutiles depuis le disque.
Utiliser les Cloud Profiles Google Play collecte les profils des utilisateurs et les envoie aux nouvelles installations. Cela amplifie vos gains de vitesse.
Les résultats de nos tests :
- Sans profil : démarrage à froid de 1 204 ms
- Baseline Profile uniquement : démarrage à froid de 620 ms
- Baseline + réordonnancement DEX : démarrage à froid de 445 ms
- Baseline + réordonnancement DEX + Cloud : démarrage à froid de 380 ms
Conseils importants pour votre flux de travail :
- Générez des profils dans la CI pour chaque version. Des profils obsolètes entraînent une perte de performance.
- Régénérez les profils après l'exécution de R8. R8 modifie la structure de votre code.
- Utilisez le mode de compilation « Partial » dans Macrobenchmark. Le mode « Full » donne des résultats erronés qui ne reflètent pas l'expérience réelle des utilisateurs.
- Testez sur différentes versions d'Android. Les gains de performance varient entre les anciens et les nouveaux niveaux d'API.
Superposez ces couches pour créer des applications plus rapides.
Source : https://dev.to/software_mvp-factory/profile-guided-optimization-for-android-app-startup-2i7a