Hero-Benchmarks sind eine Reihe von Benchmarks, die Nutzeraktionen auf hoher Ebene abdecken, z. B. das Starten einer App oder das Scrollen in der Open-Source-App Pokedex.
- Benchmarks für Startup-Hero:Die Zeit vom Öffnen der App bis zur Anzeige von Inhalten wird erfasst.
- Scroll-Hero-Benchmarks:Messen der Scrollleistung eines Lazy Grid mit Bildern.
Testeinrichtung
- App-Auswahl:Wir haben diese Tests mit der Open-Source-App Pokedex durchgeführt und die View-basierte und die Compose-basierte Version verglichen. Die App wurde ausgewählt, um reale Szenarien darzustellen, und wurde nicht vom Compose-Team entwickelt.
- Hardwarekonfiguration:Wir haben Benchmarks auf einem Pixel 3a mit Android 12 (API 31) mit gesperrten CPUs und GPUs ausgeführt. Dieses Gerät wird als Standardleistungsreferenz für Hero-Benchmarks verwendet.
- Build-Einrichtung:Für die Benchmarks wird die App im Release-Modus mit aktiviertem R8 erstellt. Die App wird vollständig vorkompiliert, um Instabilität durch die Just-in-Time-Kompilierung (JIT) zu reduzieren.
- Auswahl der Ergebnisse: Um eine Worst-Case-Analyse zu ermöglichen, wurden extreme Ausreißer und nicht repräsentatives Rauschen aus den Benchmark-Ergebnissen ausgeschlossen. Anschließend wurde eine Baseline erstellt, indem die Medianwerte der Leistungsdaten der Obergrenze ausgewählt wurden.
Benchmarks für Start-up-Helden
Für die Messung des Starts haben wir PokedexStartupBenchmark verwendet. Mit PokedexStartupBenchmark wird die Zeit gemessen, die vergeht, bis die Pokedex-App für den Nutzer sichtbar ist.
Das Starten einer App kann in einem von drei Zuständen erfolgen: Kaltstart, Warmstart oder Heißstart. Jeder Status wirkt sich darauf aus, wie lange es dauert, bis eine App für den Nutzer sichtbar wird. Bei einem Kaltstart wird die App von Grund auf neu gestartet. In diesem Benchmark messen wir die Leistung beim Starten der App im Kaltstartzustand. Wir empfehlen, die App immer auf Grundlage der Annahme eines Kaltstarts zu optimieren. Dadurch kann auch die Leistung bei Warm- und Heißstarts verbessert werden.
Die Messwerte, mit denen wir die App-Startzeit messen, sind die Zeit bis zur ersten Anzeige und die Zeit bis zur vollständigen Anzeige.
Zeit bis zur ersten Anzeige
Die Zeit bis zur ersten Anzeige (Time to Initial Display, TTID) gibt an, wie lange es dauert, bis eine App den ersten Frame rendert. Dazu gehören die Prozessinitialisierung bei einem Kaltstart, die Erstellung der Aktivität bei einem Kalt- oder Warmstart und die Anzeige des ersten Frames.
In der PokedexStartupBenchmark ist Compose 1.11 bei einem Kaltstart 2, 5% langsamer als Views für TTID.
Zeit bis zur vollständigen Anzeige
Die Zeit bis zur vollständigen Anzeige (Time to Full Display, TTFD) gibt an, wie lange es dauert, bis die App interaktiv wird. Das bedeutet, dass alle Daten geladen und dargestellt wurden. Weitere Informationen zur Zeit bis zur vollständigen Anzeige finden Sie unter App-Startzeit.
Im PokedexStartupBenchmark ist Compose 1.11 bei einem Kaltstart 13, 0% langsamer als Views für TTFD.
Scroll-Hero-Benchmarks
Zur Messung der Scrollleistung haben wir den PokedexScrollBenchmark verwendet. Sie misst die Scrollleistung des Pokedex-App-Bildschirms für ein Lazy Grid mit Bildern. Bei diesem Benchmark wird der gesamte Bildschirm mehrmals gescrollt und gewischt und es werden neue Elemente geladen. Die Scrollleistung wird anhand der Ruckelrate gemessen.
Verzögerungsrate
Android-Geräte rendern mit bis zu 60 oder 120 Bildern pro Sekunde (fps). Das bedeutet, dass das System eine strenge Frist (z. B. 16,6 ms für 60 fps) hat, um einen Frame zu erstellen. Wenn die App zu lange für ihre Aufgaben benötigt, kann dies zu einem sichtbaren Ruckeln führen, das wir als „Jank“ bezeichnen.
In der PokedexScrollBenchmark erreichen Compose und Views seit Compose 1.9.0 die gleiche Leistung von 0, 21% Ruckeln. Absolut gesehen war 1 von 485 Frames ruckelig.
Diese Benchmarks zeigen, dass Compose 1.9 und höher die Leistung von Views in Bezug auf Ruckeln beim Scrollen erreicht.
Hero-Benchmarks ausführen
So validieren Sie die Leistungsergebnisse und führen die Benchmarks lokal aus:
- Folgen Sie der AndroidX-Anleitung, um den Quellcode abzurufen.
- Folgen Sie der Anleitung im Quellcode für Hero Benchmarks.
Sie können diese Benchmarks auf jedem unterstützten Gerät ausführen, z. B. auf einem bestimmten Gerät, für das Sie Ihre App optimieren. Um die offiziellen Ergebnisse zu validieren, müssen Sie jedoch dieselbe Hardwarekonfiguration verwenden.