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.
Abbildung 1 Bearbeiten Sie die Ausführungskonfiguration. - Bearbeiten Sie die Instrumentierungsargumente, indem Sie neben dem Feld Instrumentierungsargumente auf
Abbildung 2. Bearbeiten Sie das Instrumentierungsargument.
klicken.
- Klicken Sie auf
Abbildung 3: Fügen Sie das Instrumentierungsargument hinzu.
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.cpuEventCounter.enable (experimentell)
Zählt die in androidx.benchmark.cupEventCounter.events
angegebenen CPU-Ereignisse.
Erfordert Root-Zugriff.
- Argumenttyp:boolescher Wert
- Standardeinstellung: „false“
androidx.benchmark.cpuEventCounter.events (experimentell)
Gibt an, welche Arten von CPU-Ereignissen gezählt werden sollen. Wenn Sie dieses Argument verwenden möchten, muss androidx.benchmark.cpuEventCounter.enable
auf true
gesetzt sein.
- Argumenttyp:Kommagetrennte Liste von Strings
- Verfügbare Optionen:
Instructions
CPUCycles
L1DReferences
L1DMisses
BranchInstructions
BranchMisses
L1IReferences
L1IMisses
- Standardeinstellung:
Instructions
,CpuCycles
,BranchMisses
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 Protokolle 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 Microbenchmark erfassen.
Beachten Sie, dass einige Android-Betriebssystemversionen das Methoden-Tracing nicht unterstützen, ohne dass sich dies auf nachfolgende Messungen auswirkt. Microbenchmark wirft eine Ausnahme, um dies zu verhindern. Verwenden Sie das Standardargument zum Erfassen von Methodenaufzeichnungen daher nur, wenn dies sicher möglich ist. Weitere Informationen finden Sie unter Issue #316174880.
- Argumenttyp:String
- Verfügbare Optionen:
MethodTracing
StackSampling
None
- Standardeinstellung:Sichere Version von
MethodTracing
, die nur dann einen Methoden-Trace erfasst, wenn das Gerät dies tun kann, ohne die Messungen zu beeinträchtigen.
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
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}