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:
- Bearbeiten Sie die Ausführungskonfiguration, indem Sie auf Bearbeiten klicken und die Konfiguration auswählen, die Sie bearbeiten möchten.
- Bearbeiten Sie die Instrumentierungsargumente, indem Sie neben dem Feld Instrumentierungsargumente auf klicken.
- Klicken Sie auf und fügen Sie das erforderliche 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
Empfehlungen für dich
- Hinweis: Der Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- Argumente für die Instrumentierung von Makro-Benchmarks
- Microbenchmark erfassen
- Baseline-Profile erstellen {:#creating-profile-rules}