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:
- Klicken Sie auf Bearbeiten und dann auf die Konfiguration, um die Ausführungskonfiguration zu bearbeiten.
- Klicken Sie zum Bearbeiten der Instrumentierungsargumente auf Mehr bis Instrumentierungsargumente.
- Fügen Sie das erforderliche Instrumentierungsargument hinzu. Klicken Sie dazu unter Instrumentation Extra Params auf Add.
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 mitdebuggable=true
in seinem Manifest ausgeführt wird. Dadurch wird die Laufzeitleistung drastisch reduziert, um Debugging-Features zu unterstützen. Führen Sie Benchmarks mitdebuggable=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
Empfehlungen für dich
- Hinweis: Der Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- Argumente für die Mikro-Benchmark-Instrumentierung
- Baseline-Profile erstellen
- JankStats-Bibliothek