Konfigurieren Sie das Verhalten der Bibliothek mit den folgenden Instrumentierungsargumenten. Sie können sie entweder Ihrer Gradle-Konfiguration hinzufügen oder sie direkt anwenden, wenn Sie die Instrumentierung über die Befehlszeile ausführen. Fügen Sie diese Argumente zu testInstrumentationRunnerArguments
hinzu, um sie für alle Android Studio- und Befehlszeilen-Testläufe festzulegen:
android {
defaultConfig {
// ...
testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
}
}
Sie können auch Instrumentierungsargumente einrichten, wenn Sie die Benchmarks in Android Studio ausführen. So ändern Sie die Argumente:
- Bearbeiten Sie die Ausführungskonfiguration, indem Sie auf Bearbeiten und dann auf die Konfiguration klicken.
- Bearbeiten Sie die Instrumentierungsargumente. Klicken Sie dazu neben Instrumentierungsargumente auf Mehr.
- Fügen Sie das erforderliche Instrumentierungsargument hinzu. Klicken Sie dazu unter Instrumentation Extra Params (Zusätzliche Parameter für die Instrumentierung) auf Hinzufügen.
Wenn Sie direkt über die Befehlszeile anrufen, 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 den einzelnen Benchmarks neu installiert und 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: boolesch
- Standardwert:
true
androidx.Benchmark.dryRunMode.enable
Hiermit können Sie Benchmarks in einer einzelnen 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: boolesch
- Standardwert:
false
androidx.Benchmark.enabledRules
Ermöglicht das Filtern von Ausführungen nach nur einem Testtyp: Generierung von Referenzprofilen oder Makro-Benchmark-Test. Durch Kommas getrennte Listen werden ebenfalls unterstützt.
- Argumenttyp: String
- Verfügbare Optionen:
Macrobenchmark
BaselineProfile
- Standardeinstellung: Nicht angegeben
androidx.Benchmark.junit4.SideEffectRunListener
Sie können inkonsistente Benchmark-Ergebnisse erhalten, wenn während der Ausführung der Benchmark irrelevante Hintergrundarbeiten ausgeführt werden.
Wenn Sie während des Benchmarking Hintergrundarbeiten deaktivieren möchten, setzen Sie den Instrumentierungsargumenttyp listener
auf androidx.benchmark.junit4.SideEffectRunListener
.
- Argumenttyp: String
- Verfügbare Optionen:
androidx.benchmark.junit4.SideEffectRunListener
- Standardeinstellung: Keine Angabe
androidx.Benchmark.fullTracing.enable
Aktiviert androidx.tracing.perfetto
-Tracepoints wie das Jetpack Compose-Zusammensetzungs-Tracing.
Sie müssen Ihr Projekt so einrichten, dass Zusammensetzungs-Tracing aus Benchmarks erfasst werden kann. Weitere Informationen finden Sie unter Trace mit Jetpack MacroBenchmark erfassen.
- Argumenttyp: boolescher Wert
- Standardwert:
false
androidx.Benchmark.profiling.mode
Ermöglicht das Erfassen von Trace-Dateien beim Ausführen der Benchmarks. Die verfügbaren Optionen sind die gleichen wie die für die MicroBenchmark-Bibliothek. Weitere Informationen finden Sie in den Beschreibungen unter Profil für MicroBenchmark erstellen.
- Argumenttyp: String
- Verfügbare Optionen:
MethodTracing
StackSampling
None
- Standardwert:
None
androidx.Benchmark.startupProfiles.enable
Hiermit können Sie die Generierung von Start-up-Profilen während des Benchmarking deaktivieren.
- Argumenttyp: boolescher Wert
- Standardwert:
true
androidx.Benchmark.suppressErrors
Akzeptiert eine durch Kommas getrennte Liste von Fehlern, die in Warnungen umgewandelt werden.
- Argumenttyp: Liste mit Strings
Verfügbare Optionen:
DEBUGGABLE
Der Fehler
DEBUGGABLE
gibt an, dass das Zielpaket mitdebuggable=true
im Manifest ausgeführt wird. Dadurch wird die Laufzeitleistung zur Unterstützung von Fehlerbehebungsfunktionen drastisch reduziert. Führen Sie Benchmarks mitdebuggable=false
aus, um diesen Fehler zu vermeiden. Das Debug-fähige Argument wirkt sich auf die Ausführungsgeschwindigkeit aus. Dies bedeutet, dass Benchmark-Verbesserungen möglicherweise nicht auf die tatsächliche Nutzererfahrung übertragen werden oder die Release-Leistung beeinträchtigt werden kann.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 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 auf einem Emulator ausgeführt wird, der für die Geräte echter Nutzer nicht repräsentativ ist. Verbesserungen von Emulator-Benchmarks werden möglicherweise nicht für die tatsächliche Nutzererfahrung übernommen oder beeinträchtigen die tatsächliche Geräteleistung. Stattdessen sollten Sie ein physisches Gerät für das Benchmarking verwenden. Unterdrücken Sie diesen Fehler nur mit äußerster Vorsicht.NOT-PROFILEABLE
Das Zielpaket
$packageName
wird ohne<profileable shell=true>
ausgeführt. Unter Android 10 und 11 ist Profileable erforderlich, damit MacroBenchmark detaillierte Trace-Informationen vom Zielprozess erfassen kann, z. B. in der App oder den Bibliotheken definierte System-Tracing-Abschnitte. Unterdrücken Sie diesen Fehler nur mit äußerster Vorsicht.METHOD-TRACING-ENABLED
Bei der MacroBenchmark-Ausführung der Anwendung, für die ein Benchmarking durchgeführt wird, ist Methoden-Tracing aktiviert. Dies führt dazu, dass die VM langsamer als üblich ausgeführt wird. Betrachten Sie die Messwerte aus den Trace-Dateien daher nur relativ gesehen, z. B. um die Geschwindigkeit der ersten Ausführung mit der zweiten zu vergleichen. Das Unterdrücken dieses Fehlers kann zu ungenauen Ergebnissen führen, wenn Sie Benchmarks für Builds mit verschiedenen Optionen für das Methoden-Tracing vergleichen.
Standardwert: eine leere Liste
additionalTestOutputDir
Konfiguriert, wo JSON-Benchmarkberichte und Profilergebnisse auf dem Gerät gespeichert werden.
- Argumenttyp: Pfadstring
- Standardeinstellung: Externes Verzeichnis des Test-APKs
Empfehlungen für dich
- Hinweis: Der Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- Argumente zur MikroBenchmark-Instrumentierung
- Baseline-Profile erstellen
- JankStats-Bibliothek