Argomenti di misurazione del macrobenchmark

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:

  1. Modifica la configurazione dell'esecuzione facendo clic su Modifica e poi sulla configurazione.
    modifica configurazione esecuzione
    Figura 1. Modifica la configurazione di esecuzione.
  2. Modifica gli argomenti di strumentazione facendo clic su Altro in Argomenti di strumentazione.
    modificare gli argomenti di strumentazione
    Figura 2. Modifica gli argomenti di strumentazione.
  3. Aggiungi l'argomento di strumentazione richiesto facendo clic su Aggiungi in Parametri strumentazione extra.
    aggiungere l'argomento di strumentazione obbligatorio
    Figura 3. Aggiungi l'argomento di strumentazione richiesto.

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 con debuggable=true nel manifest, il che riduce drasticamente le prestazioni di runtime per supportare le funzionalità di debug. Per evitare questo errore, esegui benchmark con debuggable=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