Benchmarking ist eine Möglichkeit, die Leistung Ihrer App zu prüfen und zu überwachen. Sie können regelmäßig Benchmarks ausführen, um Leistungsprobleme zu analysieren und zu beheben und um zu verhindern, dass durch aktuelle Änderungen Regressionen entstehen.
Android bietet zwei Benchmark-Bibliotheken und -Ansätze zum Analysieren und Testen verschiedener Situationen in Ihrer App: Macrobenchmark und Microbenchmark.
Macrobenchmark
Mit der Macrobenchmark-Bibliothek werden größere Endnutzerinteraktionen gemessen, z. B. Start, Interaktion mit der Benutzeroberfläche und Animationen. Die Bibliothek bietet eine direkte Kontrolle über die Leistungsumgebung, die Sie testen. Sie können die Kompilierung steuern und Ihre App starten und beenden, um den tatsächlichen App Start oder das Scrollen direkt zu messen.
Die Macrobenchmark-Bibliothek fügt Ereignisse ein und überwacht die Ergebnisse extern über eine Test-App, die mit Ihren Tests erstellt wurde. Wenn Sie die Benchmarks schreiben, rufen Sie Ihren App-Code daher nicht direkt auf, sondern navigieren in Ihrer App wie ein Nutzer.
Microbenchmark
Mit der Microbenchmark-Bibliothek können Sie App-Code direkt in einer Schleife benchmarken. Sie wurde entwickelt, um die CPU-Auslastung zu messen und die bestmögliche Leistung zu bewerten, z. B. wenn Just-in-Time-Kompilierung (JIT) und Festplattenzugriffe zwischengespeichert sind. Dies kann bei einer inneren Schleife oder einer bestimmten Hot-Funktion der Fall sein. Die Bibliothek kann nur den Code messen, den Sie direkt und isoliert aufrufen können.
Wenn Ihre App eine komplexe Datenstruktur verarbeiten muss oder einen bestimmten
rechenintensiven Algorithmus enthält, der während der Ausführung der App mehrmals aufgerufen wird,
sind dies möglicherweise gute Anwendungsfälle für Benchmarking. Sie können auch Teile Ihrer
Benutzeroberfläche messen. Sie können beispielsweise die Kosten der RecyclerView Elementbindung, die Zeit, die zum Aufblasen eines Layouts benötigt wird, oder die Leistungsanforderungen des Layout- und Mess
Durchlaufs Ihrer View Klasse messen.
Sie können jedoch nicht messen, wie die benchmarkten Fälle zur allgemeinen Nutzerfreundlichkeit beitragen. In einigen Szenarien erfahren Sie durch Benchmarking nicht, ob Sie einen Engpass wie Ruckeln oder die App-Startzeit verbessern. Aus diesem Grund, ist es wichtig, diese Engpässe zuerst mit dem Android Profiler zu identifizieren. Nachdem Sie den Code gefunden haben, den Sie untersuchen und optimieren möchten, kann die benchmarkte Schleife wiederholt schnell und einfach ausgeführt werden, um weniger verrauschte Ergebnisse zu erzielen. So können Sie sich auf einen Verbesserungsbereich konzentrieren.
Die Microbenchmark-Bibliothek meldet nur Informationen zu Ihrer App, nicht zu m Gesamtsystem. Daher eignet sie sich am besten für die Analyse der Leistung von Situationen, die spezifisch für die App sind, und nicht für solche, die mit allgemeinen Systemproblemen zusammenhängen.
Vergleich der Benchmark-Bibliotheken
| Macrobenchmark | Microbenchmark | |
|---|---|---|
| API-Version | 23 und höher | 14 und höher |
| Funktion | Einstiegspunkte oder Interaktionen auf hoher Ebene messen, z. B. Aktivitätsstart oder Scrollen in einer Liste. | Einzelne Funktionen messen. |
| Umfang | Test der vollständigen App außerhalb des Prozesses. | Test der CPU-Auslastung innerhalb des Prozesses. |
| Geschwindigkeit | Mittlere Iterationsgeschwindigkeit. Kann länger als eine Minute dauern. | Hohe Iterationsgeschwindigkeit. Oft weniger als 10 Sekunden. |
| Nachverfolgung | Die Ergebnisse enthalten Profiling Traces. | Optionale Methodenauswahl und -nachverfolgung. |
Empfehlungen für Sie
- Hinweis: Linktext wird angezeigt, wenn JavaScript deaktiviert ist
- Baseline-Profile erstellen {:#creating-profile-rules}
- JankStats-Bibliothek
- Übersicht über die Messung der App-Leistung