Comment l'équipe Agenda Android a amélioré le démarrage et les à-coups de l'application avec les profils de référence

Les profils de référence améliorent la vitesse d'exécution du code jusqu'à 30% en évitant interprète et compilation JIT (Just-in-Time) pas pour les parcours utilisateur courants. Les profils de référence vous permettent de choisir les parcours utilisateur souhaitent optimiser et peuvent contribuer à améliorer le démarrage de l'application, à réduire les à-coups, etc. ce qui se traduit par une amélioration des métriques métier, comme la fidélisation des utilisateurs et les notes. En savoir plus sur Baseline Profils.

L'équipe chargée de l'agenda Android a implémenté des profils de référence et observé environ 20% de l'application Amélioration du temps de démarrage et réduction d'environ 50% des frames lents ou figés. Voici ce qu'ils ont fait de bout en bout pour obtenir ces performances, et pourquoi ils a décidé d'utiliser les profils de référence pour mesurer l'impact.

Profils cloud et profils de référence

L'équipe Agenda d'Android utilisait déjà Cloud Storage Profils, qui Il existe une autre méthode d'optimisation guidée des profils (PGO, Profile Guided Optimization) basée sur des données des interactions avec l'application. Profils cloud et profils de référence comparer:

Type de profil Configuration Parcours utilisateur inclus Fonctionne de manière optimale lorsque la base d'utilisateurs est Impact réalisé Versions d'Android compatibles

Profils cloud

Activée par défaut

Choisis automatiquement sur la base de données utilisateur réelles

Grande

D'ici quelques jours

Android 9 (niveau d'API 28) ou version ultérieure

Profils de référence

Configuré par vous

Choisi par vous

Toutes les tailles

Immédiateté

Android 7 (niveau d'API 24) ou version ultérieure

L'une des principales raisons pour lesquelles l'équipe Android Agenda a décidé d'ajouter des profils de référence leur codebase était parce qu'ils passaient à un cycle de publication hebdomadaire plus rapide. Bien que les profils cloud offrent des gains de performances significatifs, le délai entre un et deux jours après le lancement de leur application pour atteindre leur impact maximal, car elles s'appuient sur en agrégeant des données utilisateur réelles. Complétez les profils cloud avec des références Les profils laissent plus de temps aux utilisateurs pour améliorer les performances optimales avant le déploiement de la prochaine version de l'application.

De plus, il était important pour l'équipe Agenda Android de pouvoir choisir les parcours utilisateur critiques (CUJ) spécifiques à inclure dans le ce que vous pouvez faire à l'aide des profils de référence.

En règle générale, nous recommandons d'utiliser des profils de référence en plus des profils cloud, activées par défaut, pour optimiser les performances.

Parcours utilisateur inclus

L'équipe Agenda Android a choisi d'inclure deux CUJ dans ses profils de référence:

  • Ouverture de l'application dans la vue "Planning" : elle s'affiche initialement dans la vue par défaut. optimiser pour les utilisateurs qui utilisent l'application pour la première fois ou qui ne modifient pas paramètres par défaut.
  • Ouverture de l'application dans la vue "Mois" : la vue choisie pour de nombreux utilisateurs, en fonction de l'utilisateur données. Pour suivre la façon dont les utilisateurs utilisent votre application, vous pouvez utiliser des outils tels que Firebase.

En règle générale, vous devez ajouter les CUJ rentables pour l'entreprise (si applicables) et les CUJ les plus courants. Pour savoir comment choisir des CUJ à optimiser. Consultez la section Ce qu'il faut inclure.

Implémentation

L'équipe en charge du calendrier Android utilise un wrapper interne pour Bibliothèque Jetpack Macrobenchmark pour générer des profils de référence pour faciliter l'intégration avec des outils internes évolutivité générale.

Voici la configuration de test Macrobenchmark pour l'ouverture de l'appli dans la programmation vue:

@Test
fun generateProfile() =
    baselineProfileRule.collect(PACKAGE_NAME, includeInStartupProfile = true) {
        startActivityAndWait()
        // Verify pre-existing recurring events and tasks are shown.
        device.waitAndFindObject(By.text("Recurring event"), 20_000)
        device.waitAndFindObject(By.text("Recurring task"), 20_000)

        // Open drawer and verify selected view.
        device.findObject(By.desc("Show Calendar List and Settings drawer")).click()
        device.waitAndFindObject(By.desc("Schedule view, Selected"), 1_000)
    }

Mesurer l'impact à l'aide de versions contrôlées

Les profils de référence étant étroitement liés à l'APK avec lequel ils sont fournis et incorporées avant l'exécution de votre application, il est impossible d'exécuter un test A/B standard expérimenter pour comprendre leur impact. Cependant, l'équipe Agenda d'Android a été d'obtenir une mesure précise de l'impact grâce à des publications contrôlées, qui vous permettent à un sous-ensemble d'utilisateurs et comparer aux utilisateurs d'une version similaire à la version précédente.

Avec les profils de référence, l'équipe a constaté dans de nombreux domaines. Ces statistiques sont regroupées pour un large éventail d'appareils et pour tous les utilisateurs, à savoir ceux qui démarrent dans la vue "Planning" et "Mois" qui bénéficieront probablement des avantages les plus importants, mais les autres utilisateurs en bénéficieront également l'optimisation des processus partagés, comme le chargement de données d'agenda à partir de base de données.

  • La latence médiane de démarrage de l'application interactive (scénario le plus courant) est passée de 775 ms à 644 ms (17%)
  • La latence médiane de démarrage à froid est passée de 1 058 ms à 901 ms (15%)
  • La latence médiane de démarrage tiède est passée de 453 ms à 378 ms (17%)
  • La fréquence médiane d'images saccadées a diminué de 42 à 60% dans les vues programmées et mensuelles

N'oubliez pas que si vous utilisez des profils cloud avec des instances de référence Profils : vous constaterez probablement une légère diminution des améliorations au cours des la première semaine, au fur et à mesure de la génération des profils cloud. Cependant, vous devez quand même constatent une amélioration significative des performances grâce aux profils de référence, d'optimisations que vous avez mises en place.

Pour en savoir plus sur les outils et les fonctionnalités, consultez les ressources suivantes: