Profil einer Mikro-Benchmark erstellen

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.