Standardmäßig liefern MicroBenchmarks Informationen zum Zeitplan und Zuweisungen des ausgeführten Codes. Wenn Sie untersuchen möchten, warum die gemessene zu langsam ausgeführt wird, können Sie die Benchmarks mit dem CPU-Profiler ausführen, angehängt.
Um die Profilerkonfiguration auszuwählen, fügen Sie dem Instrumentierungs-Runner-Argument androidx.benchmark.profiling.mode
eines der Argumente MethodTracing
, StackSampling
oder None
hinzu, wie im folgenden Snippet dargestellt.
Weitere Informationen
Informationen zu den Optionen finden Sie im Hilfeartikel Aufzeichnungskonfiguration auswählen.
MethodTracing
entspricht „Java-Methoden erfassen“ und StackSampling
entspricht „Beispiel-Java-Methoden“, wie in diesem Dokument definiert.
Cool
android { defaultConfig { // must be one of: 'None', 'StackSampling', or 'MethodTracing' testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"]= 'StackSampling' } }
Kotlin
android { defaultConfig { // must be one of: 'None', 'StackSampling', or 'MethodTracing' testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"] = "StackSampling" } }
Wenn Sie ein Profil für eine Benchmark erstellen, wird eine .trace
-Ausgabedatei auf den Host in
das Verzeichnis neben den JSON-Ergebnissen. Wenn Sie die Ergebnisse des Profilers im CPU-Profiler in Android Studio prüfen möchten, wählen Sie Datei > Öffnen aus. Weitere Informationen über
Informationen zum Lesen und Verstehen von Traces finden Sie unter Traces überprüfen.
Method-Tracing
Das Methoden-Tracing ist nützlich, wenn Sie Ihren Code optimieren möchten, können Sie feststellen, bei welchen Methoden die Ausführung länger dauert als bei anderen. Sie können konzentrieren Sie sich dann auf die Optimierung der Methoden, die sich am stärksten auf die Leistung auswirken.
Die Profilerstellung erfolgt nacheinander nach der Codemessung, sodass Ihr Test sowohl des genauen Timings und der Profilerstellung.
Stack-Stichproben
Mit dem Stichproben-Tracing können Sie auch teure Methoden ohne den Leistungsoverhead des Methoden-Tracings identifizieren. Wenn Ihre App jedoch eine Methode aufruft, nachdem ein Aufrufstapel erfasst wurde, und die Methode vor der nächsten Erfassung beendet wird, wird der Methodenaufruf nicht protokolliert. Um Methoden mit kurze Lebenszyklen sollten Sie Methoden-Tracing anstelle von Stichproben-Tracing verwenden.
Beim Stack-Sampling werden nach dem Aufwärmprogramm Aufrufstacks durch die Benchmark entnommen abgeschlossen ist. Sie können die Stichprobenhäufigkeit festlegen und Dauer der Stichprobenerhebung mithilfe von Instrumentierung Argumente.
Unter Android 10 (API 29) und höher wird für die Stack-Stichprobenerhebung Simpleperf verwendet, um App-Aufrufstacks zu erfassen, einschließlich C++-Code. Unter Android 9 (API-Version 28) und niedriger
Debug.startMethodTracingSampling
zum Erfassen von Stackproben.
Sie können diesen Profilerstellungsmodus konfigurieren, indem Sie eine weitere Instrumentierung hinzufügen Argumente:
androidx.benchmark.profiling.sampleFrequency
- Anzahl der Stackproben, die pro Sekunde erfasst werden sollen.
- Argumenttyp: Ganzzahl
- Die Standardeinstellung ist 1.000 Samples pro Sekunde.
androidx.benchmark.profiling.sampleDurationSeconds
- Ausführungsdauer der Benchmark.
- Argumenttyp: Ganzzahl
- Die Standardeinstellung ist 5 Sekunden.
Keine
Mit diesem Argument wird keine Profiler-Datei erfasst. Informationen zum Zeitplan und zu weiterhin gemessen.
Empfehlungen für dich
- Hinweis: Der Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- Argumente zur MikroBenchmark-Instrumentierung
- Benchmarks in Continuous Integration ausführen