Benchmark für deine App

Benchmarking ist eine Möglichkeit, die Leistung Ihrer Anwendung zu prü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 keine Regressionen in kürzlich vorgenommene Änderungen eingebaut werden.

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 größere Endnutzerinteraktionen wie das Starten, die Interaktion mit der Benutzeroberfläche und Animationen. Die Bibliothek bietet direkte Kontrolle über die Leistungsumgebung, die Sie testen. Damit können Sie das Kompilieren 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 von einer Testanwendung, die mit Ihren Tests erstellt wurde. Daher rufen Sie beim Schreiben der Benchmarks den Anwendungscode nicht direkt auf, sondern navigieren als Nutzer in Ihrer App.

Mikro-Benchmark

Mit der Bibliothek Mikro-Benchmark können Sie direkt in einer Schleife ein Benchmark für App-Code durchführen. Dies dient der Messung der CPU-Arbeit, mit der die Best-Case-Leistung bewertet wird, z. B. beim Aufwärmen von Just in Time (JIT) und von im Cache gespeicherten Laufwerkszugriffen, die Sie möglicherweise bei einer inneren Schleife oder einer bestimmten Hot-Funktion sehen. Die Bibliothek kann nur den Code messen, den Sie direkt aufrufen können.

Wenn Ihre Anwendung eine komplexe Datenstruktur verarbeiten muss oder einen speziellen rechenintensiven Algorithmus verwenden muss, der während der Anwendungsausführung mehrmals aufgerufen wird, sind dies gute Fälle für das Benchmarking. Sie können auch Teile Ihrer UI messen. Sie können beispielsweise die Kosten der RecyclerView-Elementbindung messen, wie lange es dauert, ein Layout aufzublähen, oder wie anspruchsvoll der Layout- und Messdurchlauf Ihrer View-Klasse aus Leistungsperspektive ist.

Sie können jedoch nicht messen, wie die Benchmarking-Fälle zur gesamten Nutzererfahrung beitragen. In einigen Szenarien sagt das Benchmarking nicht aus, ob Sie einen Engpass wie Verzögerung oder Anwendungsstartzeit beheben. 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 Benchmark-Schleife schnell und einfach wiederholt ausgeführt werden. So erhalten Sie weniger verrauschte Ergebnisse, sodass Sie sich auf einen Verbesserungsbereich konzentrieren können.

Die MicroBenchmark-Bibliothek enthält nur Informationen zu Ihrer Anwendung, nicht zum System insgesamt. Daher ist es am besten, die Leistung in Situationen zu analysieren, die für die Anwendung spezifisch sind, 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 Erfassen Sie Einstiegspunkte oder Interaktionen auf hoher Ebene wie den Start einer Aktivität oder das Scrollen in einer Liste. Messen Sie einzelne Funktionen.
Aufgabenstellung Prozessexterner Test der vollständigen Anwendung. Prozesstests der CPU-Arbeit.
Geschwindigkeit Mittlere Iterationsgeschwindigkeit. Er kann länger als eine Minute sein. Schnelle Iterationsgeschwindigkeit. Oft weniger als 10 Sekunden.
Nachverfolgung Die Ergebnisse enthalten Traces für die Profilerstellung. Optionales Stichproben- und Tracing für Methoden