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.
Fügen Sie die Instrumentierung hinzu, um die Profiler-Konfiguration auszuwählen
Runner-Argument androidx.benchmark.profiling.mode
mit einem der folgenden Werte
MethodTracing
, StackSampling
oder
None
-Argument, wie im folgenden Snippet gezeigt.
Weitere Informationen
Informationen zu den Optionen finden Sie im Hilfeartikel Aufzeichnungskonfiguration auswählen.
MethodTracing
entspricht „Trace Java-Methoden“ und StackSampling
.
entspricht den Java-Beispielmethoden 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. Um die Profilerstellungsergebnisse in der
CPU Profiler in Android Studio, wählen Sie Datei > Öffnen. 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
Die Beispielverfolgung kann auch dabei helfen, teure Methoden zu identifizieren, ohne die Leistungsaufwand für Methoden-Tracing. Wenn Ihre App jedoch eine Methode nachdem ein Aufrufstack erfasst wurde und die Methode vor der nächsten erfassen, 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 Stack-Stichproben Simpleperf verwendet, um Stichproben zu erfassen.
App-Aufrufstacks, 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
Dieses Argument erfasst keine Profilerstellungsdatei. 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