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 sicherzustellen, dass durch die letzten Änderungen keine Regressionen eingeführt werden.

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

Makro-Benchmark

Mit der Macrobenchmark-Bibliothek werden größere Endnutzerinteraktionen wie Start, Interaktion mit der Benutzeroberfläche und Animationen gemessen. 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 App-Start oder das Scrollen direkt zu messen.

Die Macrobenchmark-Bibliothek fügt Ereignisse ein und überwacht Ergebnisse extern über eine Test-App, die mit Ihren Tests erstellt wird. Daher rufen Sie beim Schreiben der Benchmarks Ihren App-Code 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. Dieser Test ist für die Messung von CPU-Arbeit konzipiert, die die Best-Case-Leistung bewertet, z. B. aufgewärmte Just-in-Time-Kompilierung (JIT) und zwischengespeicherte Festplattenzugriffe, die Sie bei einer inneren Schleife oder einer bestimmten Hot-Funktion sehen können. Mit der Bibliothek kann nur der Code gemessen werden, den Sie direkt isoliert aufrufen können.

Das sind gute Fälle für Benchmarking:

  • Wenn Ihre App eine komplexe Datenstruktur verarbeiten muss.
  • Wenn Ihre App einen bestimmten rechenintensiven Algorithmus enthält, 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 Zeit, die zum Aufblähen eines Layouts benötigt wird, oder die Leistung des Layout- und Messdurchlaufs Ihrer View-Klasse messen.

Sie können jedoch nicht messen, wie sich die Benchmarking-Fälle auf die allgemeine Nutzerfreundlichkeit auswirken. In einigen Fällen können Sie mit Benchmarking nicht feststellen, ob Sie einen Engpass wie Frame-Drops oder die Startzeit der App 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 Benchmark-Schleife wiederholt ausgeführt werden, um weniger verrauschte Ergebnisse zu erzielen. So können Sie sich auf einen Bereich konzentrieren, in dem Verbesserungen möglich sind.

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 von Situationen, die spezifisch für die App sind, und nicht für die Analyse von Situationen, die mit allgemeinen Systemproblemen zusammenhängen.

Vergleich der Benchmark-Bibliothek

Makro-Benchmark Microbenchmark
Funktion Erfassen Sie allgemeine Einstiegspunkte oder Interaktionen wie das Starten einer Aktivität oder das Scrollen einer Liste. Einzelne Funktionen analysieren
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 Iteration. Oft weniger als 10 Sekunden.
Tracing Die Ergebnisse enthalten System-Traces. Die Ergebnisse enthalten standardmäßig einen minimalen System- und einen Methoden-Trace.