MicroBenchmark-Instrumentierungsargumente

Konfigurieren Sie das Verhalten von Microbenchmark mit den folgenden Instrumentierungsargumenten. Sie können sie entweder Ihrer Gradle-Konfiguration hinzufügen oder direkt anwenden, wenn Sie die Instrumentierung über die Befehlszeile ausführen. Wenn Sie diese Argumente für alle Android Studio- und Befehlszeilen-Tests festlegen möchten, fügen Sie sie testInstrumentationRunnerArguments hinzu:

android {
    defaultConfig {
        // ...
        testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
    }
}

Sie können auch Instrumentierungsargumente einrichten, wenn Sie die Benchmarks über Android Studio ausführen. So ändern Sie die Argumente:

  1. Bearbeiten Sie die Ausführungskonfiguration, indem Sie auf Bearbeiten klicken und die Konfiguration auswählen, die Sie bearbeiten möchten.
    Abbildung 1: Bearbeiten Sie die Ausführungskonfiguration.
  2. Bearbeiten Sie die Instrumentierungsargumente, indem Sie neben dem Feld Instrumentierungsargumente auf  klicken.
    Abbildung 2: Bearbeiten Sie das Instrumentierungsargument.
  3. Klicken Sie auf  und fügen Sie das erforderliche Instrumentierungsargument hinzu.
    Abbildung 3 Fügen Sie das Instrumentierungsargument hinzu.

Wenn Sie den Benchmark über die Befehlszeile ausführen, verwenden Sie -P android.testInstrumentationRunnerArguments.[name of the argument]:

./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.profiling.mode=StackSampling

Wenn Sie einen Instrumentierungsbefehl direkt aufrufen (was in CI-Testumgebungen der Fall sein kann), übergeben Sie das Argument mit -e an am instrument:

adb shell am instrument -e androidx.benchmark.profiling.mode StackSampling -w com.example.macrobenchmark/androidx.benchmark.junit4.AndroidBenchmarkRunner

Weitere Informationen zum Konfigurieren von Benchmarks in CI finden Sie unter Benchmarking in CI.

additionalTestOutputDir

Hier wird konfiguriert, wo JSON-Benchmarkberichte und ‑Profilierungsergebnisse auf dem Gerät gespeichert werden.

  • Argumenttyp:Dateipfad-String
  • Standardeinstellung:externes Verzeichnis des Test-APK

androidx.benchmark.dryRunMode.enable

Hiermit können Sie Benchmarks in einer einzelnen Schleife ausführen, um zu prüfen, ob sie ordnungsgemäß funktionieren.

Das bedeutet:

  • Konfigurationsfehler werden nicht erzwungen (z. B. um die Ausführung regelmäßiger Korrektheitstests auf Emulatoren zu vereinfachen)
  • Der Benchmark wird nur einmal ohne Aufwärmung ausgeführt.
  • Messungen und Traces werden nicht erfasst, um die Laufzeit zu verkürzen

So wird der Testdurchsatz optimiert und die Benchmarklogik wird anhand der Build- und Messrichtigkeit validiert.

  • Argumenttyp:boolescher Wert
  • Standardeinstellung:false

androidx.benchmark.iterations

Überschreibt die zeitbasierten Zieliterationen, um eine gleichbleibende Arbeitsmenge zu gewährleisten. Dies ist in der Regel nur bei aktiviertem Profiling sinnvoll, um sicherzustellen, dass innerhalb eines Profiling-Traces eine einheitliche Arbeitsmenge ausgeführt wird, wenn verschiedene Implementierungen oder Ausführungen verglichen werden. In anderen Fällen wird dadurch wahrscheinlich die Genauigkeit oder Stabilität der Messungen beeinträchtigt.

  • Argumenttyp:Ganzzahl
  • Standardwert:nicht angegeben

androidx.benchmark.junit4.SideEffectRunListener

Es kann zu inkonsistenten Benchmarkergebnissen kommen, wenn während des Benchmarks andere Hintergrundarbeiten ausgeführt werden.

Wenn Sie Hintergrundarbeiten während des Benchmarkings deaktivieren möchten, legen Sie den listener-Typ des Instrumentierungsarguments auf androidx.benchmark.junit4.SideEffectRunListener fest.

  • Argumenttyp:String
  • Verfügbare Optionen:
    • androidx.benchmark.junit4.SideEffectRunListener
  • Standardwert:nicht angegeben

androidx.benchmark.output.enable

Ermöglicht das Schreiben der JSON-Ergebnisdatei in den externen Speicher.

  • Argumenttyp:boolescher Wert
  • Standardeinstellung:true

androidx.benchmark.profiling.mode

Ermöglicht das Erfassen von Ablaufdateien während der Ausführung der Benchmarks. Informationen zu den verfügbaren Optionen finden Sie unter Microbenchmarks analysieren.

  • Argumenttyp:String
  • Verfügbare Optionen:
    • MethodTracing
    • StackSampling
    • None
  • Standardeinstellung:None

androidx.benchmark.suppressErrors

Akzeptiert eine durch Kommas getrennte Liste von Fehlern, die in Warnungen umgewandelt werden sollen.

  • Argumenttyp:Liste von Strings
  • Verfügbare Optionen:
    • DEBUGGABLE
    • LOW-BATTERY
    • EMULATOR
    • CODE-COVERAGE
    • UNLOCKED
    • SIMPLEPERF
    • ACTIVITY-MISSING
  • Standardeinstellung:leere Liste

androidx.benchmark.startupMode.enable (veraltet)

Das Looping-Verhalten wird neu konfiguriert, um Benchmarking-Code beim Start zu unterstützen. Die Benchmarks werden ohne Aufwärmschleife für 10 Messungen ausgeführt. Um den Overhead bei Mikrobenchmarks zu minimieren, ist die Loop-Durchschnittsberechnung deaktiviert.

  • Argumenttyp:boolescher Wert
  • Standardeinstellung:false