Instrumentierungsargumente hinzufügen

Konfigurieren Sie das Verhalten der Bibliothek 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-Testausführungen festlegen möchten, fügen Sie sie zu 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. Klicken Sie auf Bearbeiten und dann auf die Konfiguration, um die Ausführungskonfiguration zu bearbeiten.
    Ausführungskonfiguration bearbeiten
    Abbildung 1: Ausführungskonfiguration bearbeiten.
  2. Klicken Sie zum Bearbeiten der Instrumentierungsargumente auf Mehr bis Instrumentierungsargumente.
    Instrumentierungsargumente bearbeiten
    Abbildung 2: Bearbeiten Sie die Instrumentierungsargumente.
  3. Fügen Sie das erforderliche Instrumentierungsargument hinzu. Klicken Sie dazu unter Instrumentation Extra Params auf Add.
    Erforderliches Instrumentierungsargument hinzufügen
    Abbildung 3: Fügen Sie das erforderliche Instrumentierungsargument hinzu.

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

./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile

androidx.Benchmark.compilation.enabled

Hiermit können Sie die Kompilierung zwischen jeder Iteration der Benchmark deaktivieren. Standardmäßig wird die Zielanwendung zwischen jeder Benchmark neu installiert und neu kompiliert, um das an measureRepeated übergebene CompilationMode zu berücksichtigen. Wenn Sie diese Option deaktivieren, können Sie sowohl die Neuinstallation als auch die Kompilierung überspringen, wenn Sie beispielsweise die Zielanwendung einmal vollständig kompilieren möchten, bevor Sie die Testsuite ausführen, und alle Benchmarks für dieses vollständig kompilierte Ziel ausführen möchten.

  • Argumenttyp:boolescher Wert
  • Standardeinstellung: true

androidx.Benchmark.dryRunMode.enable

Lässt Sie Benchmarks in einer einzigen Schleife ausführen, um zu prüfen, ob sie ordnungsgemäß funktionieren. Sie können es mit regelmäßigen Tests im Rahmen der Überprüfung verwenden.

  • Argumenttyp:boolescher Wert
  • Standardeinstellung: false

androidx.Benchmark.enabledRules

Ermöglicht das Filtern von Ausführungen für nur eine Art von Test: Baseline-Profilgenerierung oder MacroBenchmark-Test. Kommagetrennte Listen werden ebenfalls unterstützt.

  • Argumenttyp: String
  • Verfügbare Optionen:
    • Macrobenchmark
    • BaselineProfile
  • Standardeinstellung: Nicht angegeben

androidx.Benchmark.junit4.SideEffectRunListener

Wenn beim Ausführen der Benchmark irrelevante Hintergrundarbeiten ausgeführt werden, kann es zu inkonsistenten Benchmark-Ergebnissen kommen.

Wenn Sie die Hintergrundarbeit während des Benchmarking deaktivieren möchten, setzen Sie den Argumenttyp listener auf androidx.benchmark.junit4.SideEffectRunListener.

  • Argumenttyp: String
  • Verfügbare Optionen:
    • androidx.benchmark.junit4.SideEffectRunListener
  • Standardeinstellung: keine Angabe

androidx.Benchmark.perfettoSdkTracing.enable

Aktiviert androidx.tracing.perfetto-Tracepoints wie das Tracing der Jetpack Compose-Zusammensetzung. Dies wirkt sich nur aus, wenn StartupMode.COLD nicht verwendet wird, da durch das Aktivieren der Tracepoints der Zielprozess aktiviert wird.

  • Argumenttyp: boolescher Wert
  • Standardeinstellung: false

androidx.Benchmark.profiling.mode

Ermöglicht das Erfassen von Trace-Dateien während der Ausführung der Benchmarks. Die verfügbaren Optionen sind dieselben wie die für die MicroBenchmark-Bibliothek. Weitere Informationen finden Sie in den Beschreibungen unter Profil einer MicroBenchmark.

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

androidx.Benchmark.startupProfiles.enable

Hiermit können Sie die Erstellung von Startprofilen während des Benchmarking deaktivieren.

  • Argumenttyp: boolescher Wert
  • Standardeinstellung: true

androidx.Benchmark.suppressErrors

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

  • Argumenttyp: Liste der Strings
  • Verfügbare Optionen:

    • DEBUGGABLE

      Der Fehler DEBUGGABLE gibt an, dass das Zielpaket mit debuggable=true in seinem Manifest ausgeführt wird. Dadurch wird die Laufzeitleistung drastisch reduziert, um Debugging-Features zu unterstützen. Führen Sie Benchmarks mit debuggable=false aus, um diesen Fehler zu vermeiden. Das Argument „Debuggable“ beeinflusst die Ausführungsgeschwindigkeit so, dass Benchmarkverbesserungen möglicherweise nicht auf das tatsächliche Nutzererlebnis übertragen werden oder die Release-Leistung zurückgehen.

    • LOW-BATTERY

      Bei niedrigem Akkustand verringern Geräte häufig die Leistung, um den verbleibenden Akku zu schonen, z. B. indem große Kerne deaktiviert werden. Dies geschieht auch dann, wenn die Geräte an die Stromversorgung angeschlossen sind. Unterdrücken Sie diesen Fehler nur, wenn Sie absichtlich ein Profil der Anwendung mit reduzierter Leistung erstellen.

    • EMULATOR

      Der Fehler EMULATOR gibt an, dass die Benchmark in einem Emulator ausgeführt wird, was nicht repräsentativ für echte Nutzergeräte ist. Verbesserungen der Emulator-Benchmark sind möglicherweise nicht für den tatsächlichen Nutzer geeignet oder beeinträchtigen die tatsächliche Geräteleistung. Stattdessen sollten Sie zum Benchmarking ein physisches Gerät verwenden. Sie sollten diesen Fehler mit äußerster Vorsicht unterdrücken.

    • NOT-PROFILEABLE

      Das Zielpaket $packageName wird ohne <profileable shell=true> ausgeführt. Unter Android 10 und 11 ist „Profilable“ erforderlich, damit MacroBenchmark detaillierte Trace-Informationen aus dem Zielprozess erfasst, z. B. in der App oder in Bibliotheken definierte Bereiche für das System-Tracing. Sie sollten diesen Fehler mit äußerster Vorsicht unterdrücken.

    • METHOD-TRACING-ENABLED

      Bei der MacroBenchmark-Ausführung für die App, für die ein Benchmarking durchgeführt wird, ist das Methoden-Tracing aktiviert. Dadurch wird die VM langsamer als üblich ausgeführt. Berücksichtigen Sie daher die Messwerte aus den Trace-Dateien nur in Relation zu, um beispielsweise zu vergleichen, wie schnell die erste mit der zweiten Ausführung ist. Das Unterdrücken dieses Fehlers kann zu ungenauen Ergebnissen führen, wenn Sie Benchmarks für Builds mit verschiedenen Tracing-Optionen vergleichen.

  • Standardeinstellung: eine leere Liste

zusätzlicheTestOutputDir

Konfiguriert, wo JSON-Benchmark-Berichte und Profilerstellungsergebnisse auf dem Gerät gespeichert werden.

  • Argumenttyp: Pfadstring
  • Standardeinstellung: Externes Verzeichnis des Test-APKs