Configura il comportamento di Microbenchmark con i seguenti argomenti di strumentazione. Puoi aggiungerli alla configurazione Gradle o applicarli
direttamente quando esegui l'instrumentazione dalla riga di comando. Per impostare questi
argomenti per tutte le esecuzioni di test di Android Studio e della riga di comando, aggiungili a
testInstrumentationRunnerArguments
:
android {
defaultConfig {
// ...
testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
}
}
Puoi anche configurare gli argomenti di strumentazione quando esegui i benchmark da Android Studio. Per modificare gli argomenti:
- Modifica la configurazione di esecuzione facendo clic su Modifica e selezionando la
configurazione che vuoi modificare.
Figura 1. Modifica la configurazione di esecuzione. - Modifica gli argomenti di strumentazione facendo clic su
Figura 2. Modifica l'argomento di strumentazione.
accanto al campo Argomenti di
strumentazione.
- Fai clic su
Figura 3. Aggiungi l'argomento di strumentazione.
e aggiungi l'argomento di strumentazione richiesto.
Se esegui il benchmark dalla riga di comando, utilizza -P
android.testInstrumentationRunnerArguments.[name of the argument]
:
./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.profiling.mode=StackSampling
Se richiami direttamente un comando di strumentazione (come può accadere negli ambienti di test CI), passa l'argomento a am instrument
con -e
:
adb shell am instrument -e androidx.benchmark.profiling.mode StackSampling -w com.example.macrobenchmark/androidx.benchmark.junit4.AndroidBenchmarkRunner
Per saperne di più sulla configurazione dei benchmark in CI, consulta Benchmarking in CI
androidx.benchmark.cpuEventCounter.enable (sperimentale)
Conteggia gli eventi della CPU specificati in androidx.benchmark.cupEventCounter.events
.
Richiede l'accesso root.
- Tipo di argomento: booleano
- Valore predefinito: false
androidx.benchmark.cpuEventCounter.events (sperimentale)
Specifica i tipi di eventi della CPU da conteggiare. Per utilizzare questo argomento, androidx.benchmark.cpuEventCounter.enable
deve essere impostato su true
.
- Tipo di argomento:elenco di stringhe separate da virgole
- Opzioni disponibili:
Instructions
CPUCycles
L1DReferences
L1DMisses
BranchInstructions
BranchMisses
L1IReferences
L1IMisses
- Valore predefinito:
Instructions
,CpuCycles
,BranchMisses
androidx.benchmark.dryRunMode.enable
Consente di eseguire benchmark in un singolo ciclo per verificare che funzionino correttamente.
Ciò significa:
- Gli errori di configurazione non vengono applicati (ad esempio, per semplificare l'esecuzione con test di correttezza regolari sugli emulatori)
- Il benchmark esegue un solo ciclo, senza riscaldamento
- Le misurazioni e le tracce non vengono acquisite per ridurre il tempo di esecuzione
In questo modo, l'ottimizzazione viene eseguita in base alla velocità effettiva del test e alla convalida della logica di benchmark rispetto alla correttezza della compilazione e della misurazione.
- Tipo di argomento: booleano
- Valore predefinito:
false
androidx.benchmark.killExistingPerfettoRecordings
Per impostazione predefinita, Benchmark termina le registrazioni Perfetto (System Trace) esistenti quando
avvia una nuova traccia per ridurre le interferenze. Per disattivare questo comportamento, passa
false
.
- Tipo di argomento: booleano
- Valore predefinito:
true
androidx.benchmark.output.enable
Consente di scrivere il file JSON dei risultati in un archivio esterno.
- Tipo di argomento: booleano
- Valore predefinito:
true
androidx.benchmark.profiling.mode
Consente di acquisire file di traccia durante l'esecuzione dei benchmark. Consulta la sezione Profilare un microbenchmark per le opzioni disponibili.
Tieni presente che alcune versioni del sistema operativo Android non supportano la traccia dei metodi senza che le misurazioni successive vengano interessate. Microbenchmark genera un'eccezione per evitare questo problema, quindi utilizza l'argomento predefinito per acquisire le tracce del metodo solo quando è sicuro farlo. Vedi Problema n. 316174880.
- Tipo di argomento: stringa
- Opzioni disponibili:
MethodTracing
StackSampling
None
- Valore predefinito:versione sicura di
MethodTracing
che acquisisce una traccia del metodo solo se il dispositivo può farlo senza influire sulle misurazioni.
androidx.benchmark.suppressErrors
Accetta un elenco di errori separati da virgole da trasformare in avvisi.
- Tipo di argomento: elenco di stringhe
- Opzioni disponibili:
DEBUGGABLE
LOW-BATTERY
EMULATOR
CODE-COVERAGE
UNLOCKED
SIMPLEPERF
ACTIVITY-MISSING
- Valore predefinito:un elenco vuoto
additionalTestOutputDir
Configura la posizione in cui vengono salvati i report di benchmark JSON e i risultati della profilazione sul dispositivo.
- Tipo di argomento: stringa del percorso del file
- Valore predefinito: directory esterna dell'APK di test
listener
Potresti ottenere risultati del benchmark incoerenti se vengono eseguiti lavori in background non correlati durante l'esecuzione del benchmark.
Per disattivare il lavoro in background durante il benchmarking, imposta il tipo di argomento di strumentazione listener
su androidx.benchmark.junit4.SideEffectRunListener
.
- Tipo di argomento: stringa
- Opzioni disponibili:
androidx.benchmark.junit4.SideEffectRunListener
- Valore predefinito:non specificato
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Argomenti di strumentazione di Macrobenchmark
- Profilare un microbenchmark
- Creare profili di base {:#creating-profile-rules}