Capturer les métriques Macrobenchmark

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Les métriques sont le principal type d'informations extraites de vos analyses comparatives. Elles sont transmises à la fonction measureRepeated en tant que List, ce qui vous permet de préciser plusieurs métriques mesurées à la fois. L'analyse comparative requiert au moins un type de métrique.

L'extrait de code suivant capture les métriques de temps de rendu et de section de trace personnalisée.

Kotlin

benchmarkRule.measureRepeated(
    packageName = TARGET_PACKAGE,
    metrics = listOf(
        FrameTimingMetric(),
        TraceSectionMetric("RV CreateView"),
        TraceSectionMetric("RV OnBindView"),
    ),
    // ...
)

Java

benchmarkRule.measureRepeated(
    /* packageName */ TARGET_PACKAGE,
    /* metrics */ Arrays.asList(
        new StartupTimingMetric(),
        new TraceSectionMetric("RV CreateView"),
        new TraceSectionMetric("RV OnBindView"),
    ),
    /* iterations */ 5,
    // ...
);

Les résultats de l'analyse comparative sont générés dans Android Studio, comme illustré ci-dessous. Si plusieurs métriques sont définies, elles sont toutes combinées dans la sortie.

Résultats de TraceSectionMetric et de FrameTimingMetric

StartupTimingMetric

StartupTimingMetric capture les métriques de temps de démarrage de l'application avec les valeurs suivantes :

  • timeToInitialDisplayMs : délai entre la réception de l'intent de lancement par le système et le rendu du premier frame de l'activité de destination.
  • timeToFullDisplayMs : délai entre la réception de l'intent de lancement par le système et le rendu complet de l'application grâce à la méthode reportFullyDrawn. La mesure s'arrête une fois que le premier frame a été rendu après (ou avec) l'appel reportFullyDrawn(). Cette mesure peut ne pas être disponible sur Android version 10 (niveau 29 d'API) ou antérieure.

Pour en savoir plus sur les facteurs qui contribuent au temps de démarrage de l'application, consultez la page Temps de démarrage de l'application.

Résultats de StartupTimingMetric

FrameTimingMetric

FrameTimingMetric capture les informations de codes temporels des frames issues d'une analyse comparative, telles qu'un défilement ou une animation, et génère les valeurs suivantes :

  • frameOverrunMs : temps passé par un certain frame depuis son échéance. Les nombres positifs indiquent une chute d'image et un à-coup/saccade visible, tandis que les nombres négatifs indiquent l'avance d'un frame par rapport à son échéance. Disponible uniquement sur Android version 12 (niveau 31 d'API) ou ultérieure.
  • frameDurationCpuMs : temps nécessaire à la production du frame sur le processeur, à la fois pour le thread UI et pour RenderThread.

Ces mesures sont collectées par étapes de 50, 90, 95 et 99 %.

Pour savoir comment identifier et améliorer les frames trop lents, consultez Affichage lent.

Résultats de FrameTimingMetric

TraceSectionMetric (expérimental)

TraceSectionMetric capture le temps pris par une section de trace correspondant au sectionName proposé et les durées de sortie minimum, moyenne et maximum en millisecondes. La section de trace est définie soit par un appel de fonction trace(sectionName){}, soit par le code entre Trace.beginSection(sectionName) et Trace.endSection() (ou leurs variantes asynchrones). Il sélectionne toujours la première instance d'une section de trace capturée lors d'une mesure.

Pour en savoir plus sur le traçage, consultez Présentation du traçage système et Définir des événements personnalisés.

Résultats de TraceSectionMetric

PowerMetric (expérimental)

PowerMetric capture l'évolution de puissance ou d'énergie pendant la durée du test pour les categories proposées. Chaque catégorie sélectionnée est divisée en sous-composants mesurables, tandis que les catégories non sélectionnées sont ajoutées à la métrique "non sélectionnée". Notez que les métriques mesurent la consommation à l'échelle du système, et non pour chaque application. Elles sont actuellement limitées aux Pixel 6 et Pixel 6 Pro.

  • power<category>Uw : quantité d'énergie consommée pendant la durée de votre test dans cette catégorie.
  • energy<category>Uws : quantité d'énergie transférée par unité de temps pendant la durée de votre test dans cette catégorie.

Les catégories sont : CPU, ÉCRAN, GPU, GPS, MÉMOIRE, MACHINE LEARNING, RÉSEAU et SANS CATÉGORIE.

Avec certaines catégories, comme CPU, il peut être difficile de séparer le travail effectué par d'autres processus de celui effectué par votre propre application. Essayez de minimiser les interférences en supprimant ou en limitant les applications et les comptes inutiles.

Résultats de PowerMetric