Benchmark für deine App

Benchmarking ist eine Möglichkeit, die Leistung Ihrer Anwendung zu überprüfen und zu überwachen. Sie können regelmäßig Benchmarks ausführen, um Leistungsprobleme zu analysieren und zu beheben und dafür zu sorgen, dass Sie keine Regressionen bei den jüngsten Änderungen eingeführt haben.

Android bietet zwei Benchmarking-Bibliotheken und -Ansätze zum Analysieren und Testen verschiedener Arten von Situationen in Ihrer App: MacroBenchmark und MicroBenchmark.

Makro-Benchmark

Die MacroBenchmark-Bibliothek misst umfangreichere Endnutzerinteraktionen, z. B. das Starten, die Interaktion mit der Benutzeroberfläche und Animationen. Die Bibliothek bietet die direkte Kontrolle über die zu testende Leistungsumgebung. Sie können damit die Kompilierung steuern und Ihre Anwendung starten und beenden, um das tatsächliche Starten oder Scrollen der Anwendung direkt zu messen.

Die MacroBenchmark-Bibliothek fügt Ereignisse ein und überwacht die Ergebnisse extern aus einer Testanwendung, die mit Ihren Tests erstellt wurde. Daher rufen Sie beim Schreiben der Benchmarks nicht den Anwendungscode direkt auf, sondern navigieren als Nutzer in Ihrer Anwendung.

Mikro-Benchmark

Mit der MicroBenchmark-Bibliothek können Sie den App-Code direkt in einer Schleife messen. Dies wurde zum Messen der CPU-Arbeit entwickelt, die die Best-Case-Leistung bewertet (z. B. aufgewärmte Just-in-Time-Funktionen (JIT) und Laufwerkzugriffe im Cache), die bei einer inneren Schleife oder einer bestimmten aktiven Funktion zu sehen sein könnten. Die Bibliothek kann nur Code messen, den Sie direkt isoliert aufrufen können.

Wenn Ihre Anwendung eine komplexe Datenstruktur verarbeiten muss oder einen bestimmten rechenintensiven Algorithmus hat, der während der Ausführung der Anwendung mehrmals aufgerufen wird, sind dies möglicherweise gute Fälle für das Benchmarking. Sie können auch Teile Ihrer Benutzeroberfläche messen. Sie können beispielsweise die Kosten der RecyclerView-Elementbindung, die Zeit für die Inflation eines Layouts oder die Anforderung des Layout- und Messwert-Durchlaufs Ihrer View-Klasse aus Leistungssicht messen.

Sie können jedoch nicht messen, wie die Fälle im Benchmark-Vergleich zur Nutzerfreundlichkeit insgesamt beitragen. In einigen Szenarien sagt Ihnen das Benchmarking nicht, ob Sie einen Engpass wie Verzögerung oder App-Startzeit beheben. Daher ist es wichtig, diese Engpässe zuerst mit dem Android Profiler zu identifizieren. Nachdem Sie den zu untersuchenden und zu optimierenden Code gefunden haben, kann die Benchmark-Schleife schnell und einfach wiederholt ausgeführt werden, um weniger unübersichtliche Ergebnisse zu erzielen. So können Sie sich auf einen Bereich der Verbesserung konzentrieren.

Die MicroBenchmark-Bibliothek enthält nur Informationen zu Ihrer App, nicht zum gesamten System. Daher eignet sie sich am besten, um die Leistung von Anwendungssituationen zu analysieren, und nicht in Situationen, die sich auf allgemeine Systemprobleme beziehen.

Vergleich der Benchmarkbibliothek

Makro-Benchmark Mikro-Benchmark
API-Version 23 und höher 14 und höher
Funktion Messen Sie allgemeine Einstiegspunkte oder Interaktionen, z. B. den Start von Aktivitäten oder das Scrollen in einer Liste. Einzelne Funktionen messen.
Aufgabenstellung Out-of-Process-Test der vollständigen App. In-Process-Test der CPU-Arbeit.
Geschwindigkeit Mittlere Iterationsgeschwindigkeit. Er kann eine Minute überschreiten. Schnelle Iterationsgeschwindigkeit Oft kürzer als 10 Sekunden.
Nachverfolgung Die Ergebnisse werden mit Trace-Profilen geliefert. Optionales Sampling und Tracing für Methoden