Les profils de référence améliorent la vitesse d'exécution du code jusqu'à 30 % en évitant l'interprétation et les étapes de compilation juste à temps (JIT) compilation steps pour les parcours utilisateur courants. Ils vous permettent de choisir les parcours utilisateur que vous souhaitez optimiser et peuvent vous aider à améliorer le démarrage de l'application, à réduire les saccades, etc. Vous pouvez ainsi améliorer les métriques commerciales, telles que la fidélisation et les notes des utilisateurs. En savoir plus sur les profils de référence.
L'équipe Android Calendar a implémenté des profils de référence et a constaté une amélioration d'environ 20 % du temps de démarrage de l'application et une réduction d'environ 50 % des images lentes ou figées. Voici les étapes qu'elle a suivies pour obtenir ces gains de performances, de la raison pour laquelle elle a décidé d'utiliser des profils de référence à la façon dont elle a mesuré l'impact.
Comparaison entre les profils cloud et les profils de référence
L'équipe Android Calendar utilisait déjà des profils cloud, une autre méthode d'optimisation guidée par le profil (PGO) basée sur les interactions utilisateur réelles avec l'application. Voici une comparaison entre les profils cloud et les profils de référence :
| Type de profil | Configurer | Parcours utilisateur inclus | Fonctionne mieux lorsque la base d'utilisateurs est | Impact constaté | Versions Android compatibles |
|---|---|---|---|---|---|
Profils cloud |
Activés par défaut |
Choisis automatiquement en fonction des données utilisateur réelles |
Grande |
Sous quelques jours |
Android 9 (niveau d'API 28) et versions ultérieures |
Profils de référence |
Configurés par vous |
Choisis par vous |
Toutes les tailles |
Immédiateté |
Android 7 (niveau d'API 24) et versions ultérieures |
L'une des principales raisons pour lesquelles l'équipe Android Calendar a décidé d'ajouter des profils de référence à leur base de code est qu'elle est passée à un cycle de publication hebdomadaire plus rapide. Bien que les profils cloud offrent des gains de performances significatifs, leur impact maximal n'est atteint qu'un à deux jours après le lancement de l'application, car ils reposent sur l'agrégation de données utilisateur réelles. En complément des profils cloud, les profils de référence permettent aux utilisateurs de bénéficier plus longtemps des améliorations de performances maximales avant le déploiement de la prochaine version de l'application.
De plus, il était important pour l'équipe Android Calendar de pouvoir choisir les critical user journeys (CUJ) à inclure spécifiquement dans le profil, ce que vous pouvez faire à l'aide des profils de référence.
En règle générale, nous vous recommandons d'utiliser des profils de référence en plus des profils cloud, activés par défaut, pour obtenir les meilleures performances.
Parcours utilisateur inclus
L'équipe Android Calendar a choisi d'inclure deux CUJ dans ses profils de référence :
- Ouverture de l'application en mode Agenda : il s'agit de la vue par défaut. Il est donc important de l'optimiser pour les utilisateurs qui utilisent l'application pour la première fois ou qui ne modifient pas les paramètres par défaut.
- Ouverture de l'application en mode Mois : il s'agit de la vue choisie par de nombreux utilisateurs, en fonction des données utilisateur. Pour suivre l'utilisation de votre application par les utilisateurs, vous pouvez utiliser des outils tels que Firebase.
En règle générale, vous devez ajouter les CUJ qui sont rentables pour l'entreprise (le cas échéant) et les CUJ les plus courants. Pour en savoir plus sur la façon de choisir les CUJ à optimiser, consultez Que faut-il inclure ?
Implémentation
L'équipe Android Calendar utilise un wrapper interne pour la bibliothèque Jetpack Macrobenchmark afin de générer des profils de référence pour faciliter l'intégration avec les outils internes et l'évolutivité générale.
Voici la configuration du test Macrobenchmark pour ouvrir l'application en mode Agenda :
@Test
fun generateProfile() =
baselineProfileRule.collect(PACKAGE_NAME, includeInStartupProfile = true) {
uiAutomator {
startApp(packageName = PACKAGE_NAME)
// Verify pre-existing recurring events and tasks are shown.
// onElement waits for the element by default
onElement { textAsString() == "Recurring event" }
onElement { textAsString() == "Recurring task" }
// Open drawer and verify selected view.
onElement { contentDescriptionAsString() == "Show Calendar List and Settings drawer" }.click()
onElement { contentDescriptionAsString() == "Schedule view, Selected" }
}
}
Remplacez les éléments suivants :
- PACKAGE_NAME : nom du package de l'application pour laquelle vous souhaitez générer des profils de référence.
Mesurer l'impact à l'aide de versions contrôlées
Étant donné que les profils de référence sont étroitement liés à l'APK avec lequel ils sont fournis et qu'ils sont intégrés avant l'exécution de votre application, il n'est pas possible d'exécuter un test A/B standard pour comprendre leur impact. Toutefois, l'équipe Android Calendar a pu obtenir une mesure précise de l'impact à l'aide de versions contrôlées, dans lesquelles vous ne publiez la nouvelle version de l'application que pour un sous-ensemble d'utilisateurs et vous la comparez à des utilisateurs qui utilisent une version semblable à la version précédente.
Avec les profils de référence, l'équipe a constaté les améliorations immédiates et significatives suivantes dans plusieurs domaines. Ces statistiques sont agrégées sur un large éventail d'appareils et pour tous les utilisateurs. Ceux qui commencent en mode Agenda et Mois sont probablement ceux qui bénéficient le plus de ces améliorations, mais les autres utilisateurs en profitent également grâce à l' optimisation des processus partagés, tels que le chargement des données d'agenda à partir de la base de données.
- La latence médiane du démarrage interactif de l'application (scénario le plus courant) est passée de 775 ms à 644 ms (17 %)
- La latence médiane du démarrage à froid est passée de 1 058 ms à 901 ms (15 %)
- La latence médiane du démarrage tiède est passée de 453 ms à 378 ms (17 %)
- Le taux d'images saccadées médian a diminué de 42 à 60 % en mode Agenda et Mois
N'oubliez pas que si vous utilisez des profils cloud en même temps que des profils de référence , vous constaterez probablement une légère diminution des améliorations au cours de la première semaine, car les profils cloud sont générés. Toutefois, vous devriez toujours constater des gains de performances significatifs avec les profils de référence en plus des autres optimisations que vous avez mises en place.
Pour en savoir plus sur les outils et les fonctionnalités, consultez les ressources suivantes :
- À propos des profils de référence
- Analyse comparative des profils de référence avec la bibliothèque Macrobenchmark