Configura il comportamento della libreria 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 dell'esecuzione facendo clic su Modifica e poi sulla
configurazione.
Figura 1. Modifica la configurazione di esecuzione. - Modifica gli argomenti di strumentazione facendo clic su
Figura 2. Modifica gli argomenti di strumentazione.
Altro in
Argomenti di strumentazione.
- Aggiungi l'argomento di strumentazione richiesto facendo clic su
Figura 3. Aggiungi l'argomento di strumentazione richiesto.
Aggiungi in Parametri
strumentazione extra.
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 richiami direttamente il comando am instrument
(come potrebbe accadere
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 saperne di più sulla configurazione dei benchmark in CI, consulta Benchmarking in CI
androidx.benchmark.compilation.enabled
Consente di disattivare la compilazione tra ogni iterazione del benchmark. Per
impostazione predefinita, l'applicazione di destinazione viene reinstallata e ricompilata tra un
benchmark e l'altro, per rispettare CompilationMode
passato a
measureRepeated
. La disattivazione consente di 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 rispetto a questa destinazione completamente compilata.
- Tipo di argomento: booleano
- Valore predefinito:
true
androidx.benchmark.dryRunMode.enable
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 base 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.fullTracing.enable
Attiva i punti di traccia androidx.tracing.perfetto
, ad esempio la traccia della composizione di Jetpack Compose.
Devi configurare il progetto per poter acquisire il tracciamento della composizione dai benchmark. Per maggiori informazioni, consulta la pagina Acquisire una traccia con Jetpack Macrobenchmark.
- 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.profiling.mode
Consente di acquisire file di traccia durante l'esecuzione dei benchmark. Le opzioni disponibili sono le stesse della libreria Microbenchmark. Per ulteriori informazioni, consulta le descrizioni in Profilare 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 separato da virgole di errori da trasformare in avvisi.
- Tipo di argomento: elenco di stringhe
Opzioni disponibili:
DEBUGGABLE
L'errore
DEBUGGABLE
indica che il pacchetto di destinazione viene eseguito condebuggable=true
nel manifest, il che riduce drasticamente le prestazioni di runtime per supportare le funzionalità di debug. Per evitare questo errore, esegui benchmark condebuggable=false
. L'argomento debuggable influisce sulla velocità di esecuzione in modo tale che i miglioramenti del benchmark potrebbero non riflettersi sull'esperienza di un utente reale o potrebbero peggiorare il rendimento della release.LOW-BATTERY
Quando la batteria è quasi esaurita, i dispositivi spesso riducono le prestazioni per risparmiare la batteria rimanente, ad esempio disattivando i core di grandi dimensioni. Ciò si verifica anche quando i dispositivi sono collegati. Elimina questo errore solo se stai profilando deliberatamente 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 del benchmark dell'emulatore potrebbero non essere trasferiti all'esperienza di un utente reale o potrebbero peggiorare le prestazioni del dispositivo reale. Dovresti utilizzare un dispositivo fisico per il benchmark. Sopprimi questo errore con estrema cautela.NOT-PROFILEABLE
Il pacchetto di destinazione
$packageName
è in esecuzione senza<profileable shell=true>
. Profileable è necessario su Android 10 e 11 per consentire a Macrobenchmark di acquisire informazioni dettagliate sulla traccia dal processo di destinazione, ad esempio le sezioni di traccia del sistema definite nell'app o nelle librerie. Sopprimi questo errore con estrema cautela.METHOD-TRACING-ENABLED
L'esecuzione di Macrobenchmark per l'app di cui viene eseguito il benchmarking ha l'analisi dei metodi attivata. Ciò fa sì che la VM funzioni più lentamente del solito, quindi considera le metriche dei file di traccia in termini relativi, ad esempio confrontando la velocità della prima esecuzione con quella della seconda. La soppressione di questo errore può comportare risultati imprecisi se confronti i benchmark per build con opzioni di tracciamento dei metodi diverse.
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 di percorso
- 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 microbenchmark
- Creare profili di base
- Libreria JankStats