Les benchmarks Hero sont un ensemble de benchmarks qui couvrent les parcours utilisateur de haut niveau dans les applications, comme le démarrage de l'application ou le défilement dans l'application Pokedex Open Source.
- Benchmarks de héros de démarrage : suivi du temps écoulé entre l'ouverture de l'application et l'affichage du contenu.
- Benchmarks de défilement Hero : mesure des performances de défilement d'une grille à chargement différé avec des images.
Configuration du test
- Sélection de l'application : nous avons effectué ces tests à l'aide de l'application Pokedex Open Source, en comparant ses versions basée sur les vues et basée sur Compose. L'application a été sélectionnée pour représenter des scénarios réels et n'a pas été développée par l'équipe Compose.
- Configuration matérielle : nous avons effectué des tests de référence sur un Pixel 3a équipé d'Android 12 (API 31) avec des CPU et des GPU verrouillés. Cet appareil sert de référence standard pour les benchmarks de référence.
- Configuration de compilation : les benchmarks utilisent l'application compilée en mode version avec R8 activé. L'application est entièrement précompilée pour réduire l'instabilité due à la compilation juste à temps (JIT).
- Sélection des résultats : pour garantir l'analyse du pire scénario, les valeurs aberrantes extrêmes et le bruit non représentatif ont été exclus des résultats du benchmark. Une référence a ensuite été établie en sélectionnant les valeurs médianes des données sur les performances de la limite supérieure.
Benchmarks pour les héros de start-up
Pour mesurer le démarrage, nous avons utilisé PokedexStartupBenchmark. PokedexStartupBenchmark mesure le temps nécessaire pour que l'application Pokedex soit visible par l'utilisateur.
Le lancement d'une application peut avoir l'un des trois états suivants : démarrage à froid, démarrage tiède ou démarrage à chaud. Chaque état a une incidence sur le délai nécessaire pour qu'une application soit visible par l'utilisateur. Lors d'un démarrage à froid, l'application part de zéro. Dans ce benchmark, nous mesurons les performances de lancement de l'application en démarrage à froid. Nous vous recommandons de toujours optimiser l'application en partant du principe qu'elle démarre à froid. Cela peut également améliorer les performances des démarrages tiède et à chaud.
Les métriques que nous utilisons pour mesurer le temps de démarrage de l'application sont le temps d'affichage initial et le temps d'affichage total.
Délai d'affichage initial
Le délai d'affichage initial (TTID) mesure le temps nécessaire pour qu'une application produise sa première image, y compris l'initialisation du processus lors d'un démarrage à froid, la création d'activités lors d'un démarrage à froid ou tiède, et l'affichage de la première image.
Dans PokedexStartupBenchmark, Compose 1.11 est 2,5% plus lent que Views pour le TTID avec un démarrage à froid.
Délai d'affichage total
Le délai d'affichage total (TTFD) mesure le temps nécessaire pour que l'application devienne interactive. Cela signifie que toutes les données ont été chargées et affichées. Pour en savoir plus sur le temps nécessaire à l'affichage complet, consultez Temps de démarrage de l'application.
Dans PokedexStartupBenchmark, Compose 1.11 est 13% plus lent que Views pour le TTFD avec un démarrage à froid.
Benchmarks des héros de défilement
Pour mesurer les performances de défilement, nous avons utilisé PokedexScrollBenchmark. Il mesure les performances de défilement de l'écran de l'application Pokedex pour une grille différée avec des images. Dans ce benchmark, l'intégralité de l'écran est défilée et balayée plusieurs fois, et de nouveaux éléments sont chargés. Les performances de défilement sont mesurées par le taux de saccades.
Taux de saccades
Les appareils Android affichent jusqu'à 60 ou 120 images par seconde (fps). Cela signifie que le système dispose d'un délai strict (par exemple, 16,6 ms pour 60 fps) pour produire un frame. Si l'application met trop de temps à effectuer son travail, cela peut entraîner un bégaiement visible que nous appelons "jank".
Dans PokedexScrollBenchmark, Compose et Views atteignent les mêmes performances de 0,21% d'à-coups depuis Compose 1.9.0. En termes absolus, 1 frame sur 485 était saccadé.
Ces benchmarks montrent que Compose 1.9 et versions ultérieures correspondent aux performances de Views pour les saccades lors du défilement.
Exécuter des benchmarks de héros
Pour valider les résultats de performances et exécuter les benchmarks en local :
- Suivez le guide AndroidX pour consulter le code source.
- Suivez les instructions du code source des benchmarks Hero.
Vous pouvez exécuter ces benchmarks sur n'importe quel appareil compatible, par exemple un appareil spécifique pour lequel vous optimisez votre application. Toutefois, pour valider les résultats officiels, utilisez la même configuration matérielle.