Argomenti di misurazione del macrobenchmark

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:

  1. Modifica la configurazione di esecuzione facendo clic su Modifica e poi sulla configurazione.
    Modifica configurazione esecuzione
    Figura 1. Modifica la configurazione di esecuzione.
  2. Modifica gli argomenti di misurazione facendo clic su Altro accanto a Argomenti di misurazione.
    Modifica gli argomenti di misurazione
    Figura 2. Modifica gli argomenti di misurazione.
  3. Aggiungi l'argomento di misurazione richiesto facendo clic su Aggiungi in Parametri extra di misurazione.
    Aggiungi l'argomento di misurazione obbligatorio
    Figura 3. Aggiungi l'argomento di instrumentation obbligatorio.

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 con debuggable=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 con debuggable=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