Argomenti strumentazione Microbenchmark

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:

  1. Modifica la configurazione di esecuzione facendo clic su Modifica e selezionando la configurazione che vuoi modificare.
    Figura 1. Modifica la configurazione di esecuzione.
  2. Modifica gli argomenti di strumentazione facendo clic su accanto al campo Argomenti di strumentazione.
    Figura 2. Modifica l'argomento di strumentazione.
  3. Fai clic su e aggiungi l'argomento di strumentazione richiesto.
    Figura 3. Aggiungi l'argomento di strumentazione.

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