Configura il comportamento della libreria con i seguenti argomenti di instrumentation. Puoi aggiungerli alla configurazione di Gradle o applicarli direttamente quando esegui l'ispezione dalla riga di comando. Per impostare questi parametri per tutte le esecuzioni di test della riga di comando e di Android Studio, aggiungili a testInstrumentationRunnerArguments
:
android {
defaultConfig {
// ...
testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
}
}
Puoi anche configurare gli argomenti di misurazione quando esegui i benchmark da Android Studio. Per modificare gli argomenti:
- Modifica la configurazione di esecuzione facendo clic su Modifica e poi sulla configurazione.
- Modifica gli argomenti di misurazione facendo clic su Altro accanto a Argomenti di misurazione.
- Aggiungi l'argomento di misurazione richiesto facendo clic su Aggiungi in Parametri extra di misurazione.
Se esegui il macrobenchmark dalla riga di comando, utilizza -P
android.testInstrumentationRunnerArguments.[name of the argument]
:
./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile
Se invochi direttamente il comando am instrument
(come potrebbe essere il caso negli ambienti di test CI), passa l'argomento a am instrument
con -e
:
adb shell am instrument -e androidx.benchmark.enabledRules BaselineProfile -w com.example.macrobenchmark/androidx.test.runner.AndroidJUnitRunner
Per ulteriori informazioni sulla configurazione dei benchmark in CI, consulta Benchmarking in CI
androidx.benchmark.compilation.enabled
Ti consente di disattivare la compilazione tra ogni iterazione del benchmark. Per impostazione predefinita, l'applicazione target viene reinstallata e ricompilata tra ogni benchmark per rispettare CompilationMode
passato a measureRepeated
. Se la disattivi, puoi saltare sia la reinstallazione sia la compilazione se, ad esempio, vuoi compilare completamente l'app di destinazione una volta prima di eseguire la suite di test ed eseguire tutti i benchmark sul target completamente compilato.
- Tipo di argomento: booleano
- Valore predefinito:
true
androidx.benchmark.dryRunMode.enable
Ti consente di eseguire benchmark in un unico ciclo per verificare se funzionano correttamente. Puoi utilizzarlo con i test regolari nell'ambito della verifica.
- Tipo di argomento: booleano
- Valore predefinito:
false
androidx.benchmark.enabledRules
Consente di filtrare le esecuzioni in base a un solo tipo di test: generazione del profilo di riferimento o test macrobenchmark. Sono supportati anche gli elenchi separati da virgole.
- Tipo di argomento: stringa
- Opzioni disponibili:
Macrobenchmark
BaselineProfile
- Valore predefinito: Non specificato
androidx.benchmark.junit4.SideEffectRunListener
Potresti ottenere risultati incoerenti del benchmark se viene eseguito un lavoro in background non correlato durante l'esecuzione del benchmark.
Per disattivare il lavoro in background durante il benchmarking, imposta il listener
tipo di argomento di strumentazione su
androidx.benchmark.junit4.SideEffectRunListener
.
- Tipo di argomento: stringa
- Opzioni disponibili:
androidx.benchmark.junit4.SideEffectRunListener
- Valore predefinito: non specificato
androidx.benchmark.fullTracing.enable
Attiva i tracepoint androidx.tracing.perfetto
, ad esempio il monitoraggio della composizione di Jetpack Compose.
Devi configurare il progetto in modo da poter acquisire il monitoraggio della composizione dai benchmark. Per ulteriori informazioni, consulta la sezione Acquisire una traccia con Jetpack Macrobenchmark.
- Tipo di argomento: booleano
- Valore predefinito:
false
androidx.benchmark.profiling.mode
Consente di acquisire i file di traccia durante l'esecuzione dei benchmark. Le opzioni disponibili sono le stesse della libreria Microbenchmark. Per ulteriori informazioni, consulta le descrizioni in Eseguire il profiling di un microbenchmark.
- Tipo di argomento: stringa
- Opzioni disponibili:
MethodTracing
StackSampling
None
- Valore predefinito:
None
androidx.benchmark.startupProfiles.enable
Consente di disattivare la generazione di profili di avvio durante il benchmarking.
- Tipo di argomento: booleano
- Valore predefinito:
true
androidx.benchmark.suppressErrors
Accetta un elenco di errori separati da virgole da trasformare in avvisi.
- Tipo di argomento: elenco di stringhe
Opzioni disponibili:
DEBUGGABLE
L'errore
DEBUGGABLE
indica che il pacchetto di destinazione è in esecuzione condebuggable=true
nel file manifest, il che riduce drasticamente le prestazioni di runtime per supportare le funzionalità di debug. Per evitare questo errore, esegui i benchmark condebuggable=false
. L'argomento debuggable influisce sulla velocità di esecuzione in modo che i miglioramenti del benchmark potrebbero non essere applicati all'esperienza di un utente reale o potrebbero peggiorare il rendimento della release.LOW-BATTERY
Quando la batteria è in esaurimento, i dispositivi spesso riducono le prestazioni per risparmiare la batteria rimanente, ad esempio disattivando i core big. Ciò si verifica anche quando i dispositivi sono collegati. Elimina questo errore solo se stai deliberatamente profilando l'app con prestazioni ridotte.
EMULATOR
L'errore
EMULATOR
indica che il benchmark viene eseguito su un emulatore, che non è rappresentativo dei dispositivi degli utenti reali. I miglioramenti dei benchmark dell'emulatore potrebbero non essere trasferiti all'esperienza di un utente reale o potrebbero peggiorare il rendimento del dispositivo reale. Dovresti utilizzare un dispositivo fisico per eseguire il benchmark. Elimina questo errore con estrema cautela.NOT-PROFILEABLE
Il pacchetto di destinazione
$packageName
è in esecuzione senza<profileable shell=true>
. La funzionalità Profilabile è obbligatoria su Android 10 e 11 per consentire a Macrobenchmark di acquisire informazioni dettagliate sulle tracce dal processo di destinazione, ad esempio le sezioni di monitoraggio del sistema definite nell'app o nelle librerie. Elimina questo errore con estrema cautela.METHOD-TRACING-ENABLED
L'esecuzione del macrobenchmark per l'app di cui viene eseguito il benchmarking ha attivato il monitoraggio dei metodi. Ciò causa un rallentamento della VM rispetto al solito, quindi prendi in considerazione solo le metriche dei file di traccia in termini relativi, ad esempio confrontando la velocità della prima esecuzione con quella della seconda. L'eliminazione di questo errore può comportare risultati imprecisi se confronti i benchmark per le build con opzioni di monitoraggio dei metodi diverse.
Valore predefinito: un elenco vuoto
additionalTestOutputDir
Configura la posizione in cui vengono salvati i report di benchmark e i risultati di profilazione JSON sul dispositivo.
- Tipo di argomento: stringa del percorso
- Valore predefinito: directory esterna dell'APK di test
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Argomenti di instrumentazione dei microbenchmark
- Creare profili di baseline
- Libreria JankStats