App vergleichen (Aufrufe)

Konzepte und Jetpack Compose-Implementierung

Mit Benchmarking können Sie die Leistung Ihrer App untersuchen und ü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. der Start, die 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 den 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 Best-Case-Leistung zu bewerten, z. B. bei erwärmtem Just-in-Time-Code (JIT) und im Cache gespeicherten Festplattenzugriffen, die bei einer inneren Schleife oder einer bestimmten Hot-Funktion auftreten können. Die Bibliothek kann nur den Code messen, den Sie direkt und isoliert aufrufen können.

Das sind gute Anwendungsfälle für Benchmarking:

  • Wenn Ihre App eine komplexe Datenstruktur verarbeiten muss.
  • Wenn Ihre App einen bestimmten rechenintensiven Algorithmus hat, der während der Ausführung der App mehrmals aufgerufen wird.

Sie können auch Teile Ihrer Benutzeroberfläche messen. Sie können beispielsweise die Kosten für RecyclerView die Elementbindung, die Zeit, die zum Aufblasen eines Layouts benötigt wird, oder die Leistung des Layout- und Messdurchlaufs Ihrer View Klasse messen.

Sie können jedoch nicht messen, wie die benchmarkten Fälle zur allgemeinen Nutzererfahrung beitragen. In einigen Szenarien erfahren Sie durch Benchmarking nicht, ob Sie einen Engpass wie verworfene Frames 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 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 zum System insgesamt. 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
Funktion Messung von Einstiegspunkten oder Interaktionen auf hoher Ebene, z. B. Aktivitätsstart oder Scrollen in einer Liste. Messung einzelner Funktionen.
Umfang Out-of-Process-Test der vollständigen App. In-Process-Test der CPU-Auslastung.
Geschwindigkeit Mittlere Iterationsgeschwindigkeit. Kann mehr als eine Minute dauern. Hohe Iterationsgeschwindigkeit. Oft weniger als 10 Sekunden.
Tracing Die Ergebnisse enthalten System-Traces. Die Ergebnisse enthalten standardmäßig einen minimalen System-Trace und einen Method-Trace.