Nous vous recommandons d'utiliser Jetpack Macrobenchmark pour tester les performances d'une appli lorsque les profils de référence sont activés, puis de comparer ces résultats à une analyse comparative avec les profils de références désactivés. Cette approche vous permet de mesurer le temps de démarrage de l'appli (temps d'affichage initial et complet) ou les performances d'affichage de l'environnement d'exécution pour déterminer si les images produites peuvent provoquer des à-coups.
Les bibliothèques Macrobenchmark vous permettent de contrôler la compilation avant mesure via l'API CompilationMode
. Pour mesurer les résultats, définissez le paramètre compilationMode
sur la valeur correcte, comme indiqué dans l'extrait de code suivant :
@RunWith(AndroidJUnit4ClassRunner::class)
class ColdStartupBenchmark {
@get:Rule
val benchmarkRule = MacrobenchmarkRule()
@Test
fun startupNoCompilation() = startup(CompilationMode.None())
@Test
fun startupPartialWithBaselineProfiles() =
startup(CompilationMode.Partial(baselineProfileMode = BaselineProfileMode.Require))
@Test
fun startupPartialCompilation = startup(
CompilationMode.Partial(
baselineProfileMode = BaselineProfileMode.Disable,
warmupIteration = 3
)
)
@Test
fun startupFullCompilation() = startup(CompilationMode.Full())
private fun startup(compilationMode: CompilationMode) = benchmarkRule.measureRepeated(
packageName = "com.example.macrobenchmark.target",
metrics = listOf(StartupTimingMetric()),
compilationMode = compilationMode,
iterations = 10,
startupMode = StartupMode.COLD,
setupBlock = {
pressHome()
}
) {
// Waits for the first rendered frame, which represents time to initial display.
startActivityAndWait()
// Waits for content to be visible, which represents time to fully drawn.
device.wait(Until.hasObject(By.res("my-content")), 5_000)
}
}
Sur la capture d'écran suivante, vous pouvez consulter les résultats directement dans Android Studio pour l'application exemple Now in Android exécutée sur le Google Pixel 7. Les résultats montrent que le démarrage de l'appli est plus rapide lors de l'utilisation de profils de référence (229,0 ms) en comparaison avec aucune compilation (324,8 ms).

ColdStartupBenchmark
indiquant l'affichage initial sans compilation (324 ms), la compilation complète (315 ms), la compilation partielle (312 ms) et les profils de référence (229 ms).Bien que l'exemple précédent affiche des résultats de démarrage d'appli capturés avec StartupTimingMetric
, il existe d'autres métriques importantes que vous pouvez prendre en compte, comme FrameTimingMetric
. Pour en savoir plus sur tous les types de métriques, consultez Capturer les métriques Macrobenchmark.
Délai d'affichage total
L'exemple précédent mesure le délai d'affichage initial (TTID), qui correspond au temps nécessaire à l'appli pour générer son premier frame. Toutefois, cette valeur ne reflète pas nécessairement combien de temps l'utilisateur doit patienter pour pouvoir commencer à interagir avec votre appli. La métrique Délai d'affichage total (TTFD) est plus utile pour mesurer et optimiser les chemins de code nécessaires afin de fournir une appli entièrement fonctionnelle.
Nous vous recommandons d'optimiser à la fois le TTID et le TTFD, car ils sont tous les deux importants. Un TTID faible permet à l'utilisateur de voir que l'appli se lance. Il est important de limiter le TTFD pour que l'utilisateur puisse interagir rapidement avec l'appli.
Pour connaître les stratégies de reporting une fois que l'interface utilisateur de l'appli est entièrement dessinée, consultez Améliorer la précision du temps de démarrage.
Recommandations personnalisées
- Remarque : Le texte du lien s'affiche lorsque JavaScript est désactivé
- [Écrire une Macrobenchmark][11]
- [Capturer les métriques Macrobenchmark][12]
- [Analyse et optimisation du démarrage de l'appli {:#app-startup-analysis-optimization}][13]