App vergleichen (Aufrufe)

Konzepte und Jetpack Compose-Implementierung

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 sicherzustellen, dass Sie bei den letzten Änderungen keine Regressionen eingeführt haben.

Android bietet zwei Benchmarking-Bibliotheken und -Ansätze zum Analysieren und Testen verschiedener Situationen in Ihrer App: Macrobenchmark und Microbenchmark.

Makrobenchmark

Die Macrobenchmark-Bibliothek misst größere Endnutzerinteraktionen wie Start, Interaktion mit der Benutzeroberfläche und Animationen. Die Bibliothek bietet direkte Kontrolle über die Leistungsumgebung, die Sie testen. Damit können Sie die Kompilierung steuern und Ihre App starten und beenden, um den tatsächlichen Start oder das Scrollen der App direkt zu messen.

Die Macrobenchmark-Bibliothek fügt Ereignisse ein und überwacht Ergebnisse extern über eine Test-App, die mit Ihren Tests erstellt wird. Wenn Sie die Benchmarks schreiben, rufen Sie Ihren App-Code daher nicht direkt auf, sondern navigieren Sie als Nutzer in Ihrer App.

Mikrobenchmark

Mit der Microbenchmark-Bibliothek können Sie App-Code direkt in einer Schleife benchmarken. Damit wird die CPU-Arbeit gemessen, um die bestmögliche Leistung zu bewerten, z. B. aufgewärmte Just-in-Time-Zugriffe (JIT) und im Cache gespeicherte Laufwerkszugriffe, die Sie bei einer inneren Schleife oder einer bestimmten Hot-Funktion sehen können. Die Bibliothek kann nur den Code messen, den Sie direkt isoliert aufrufen können.

In diesen Fällen ist Benchmarking sinnvoll:

  • Wenn Ihre Anwendung 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 die RecyclerView-Elementbindung, die Dauer des Aufbaus eines Layouts oder die Leistung des Layout- und Messdurchlaufs Ihrer View-Klasse messen.

Sie können jedoch nicht messen, wie die Benchmark-Fälle zur allgemeinen Nutzererfahrung beitragen. In einigen Szenarien lässt sich anhand von Benchmarking nicht feststellen, ob Sie einen Engpass wie ausgelassene Frames oder die Startzeit der App verbessern. Daher 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 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 sich das Tool am besten für die Analyse der Leistung in Situationen, die spezifisch für die App sind, und nicht für solche, die mit allgemeinen Systemproblemen zusammenhängen könnten.

Vergleich der Benchmark-Bibliotheken

Makrobenchmark Mikrobenchmark
Funktion Messen Sie übergeordnete Einstiegspunkte oder Interaktionen, z. B. das Starten einer Aktivität oder das Scrollen in einer Liste. Einzelne Funktionen messen.
Umfang Out-of-Process-Test der gesamten App. In-Process-Test der CPU-Arbeit.
Geschwindigkeit Mittlere Iterationsgeschwindigkeit. Sie kann länger als eine Minute dauern. Schnelle Iterationsgeschwindigkeit. Oft weniger als 10 Sekunden.
Tracing Die Ergebnisse enthalten System-Traces. Die Ergebnisse enthalten standardmäßig einen minimalen System-Trace und einen Methoden-Trace.