Aggiungi argomenti di strumentazione

Configura il comportamento della libreria con i seguenti argomenti di strumentazione. Puoi aggiungerli alla configurazione Gradle o applicarli direttamente durante l'esecuzione della strumentazione dalla riga di comando. Per impostare questi argomenti 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 impostare argomenti di strumentazione quando esegui i benchmark da Android Studio. Per modificare gli argomenti, procedi nel seguente modo:

  1. Modifica la configurazione dell'esecuzione facendo clic su Modifica, quindi sulla configurazione.
    modifica configurazione esecuzione
    Figura 1. Modifica la configurazione di esecuzione.
  2. Modifica gli argomenti della strumentazione facendo clic su Altro accanto a Argomenti strumentazione.
    modifica gli argomenti della strumentazione
    Figura 2. Modifica gli argomenti di strumentazione.
  3. Aggiungi l'argomento di strumentazione richiesto facendo clic su Aggiungi in Parametri aggiuntivi strumentazione.
    aggiungi l'argomento di strumentazione richiesto
    Figura 3. Aggiungi l'argomento di strumentazione richiesto.

Se chiami direttamente dalla riga di comando, usa -P android.testInstrumentationRunnerArguments.[name of the argument].

./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile

androidx.benchmark.compilation.enabled

Consente di disabilitare la compilazione tra ogni iterazione del benchmark. Per impostazione predefinita, l'applicazione di destinazione viene reinstallata e ricompilata tra ogni benchmark, per rispettare il valore CompilationMode trasmesso a measureRepeated. Se disattivi questa opzione, puoi saltare sia la reinstallazione sia la compilazione se, ad esempio, vuoi compilare completamente l'app di destinazione prima di eseguire la suite di test ed eseguire tutti i benchmark sulla destinazione completamente compilata.

  • Tipo di argomento: booleano
  • Il valore predefinito è: true

androidx.benchmark.dryRunMode.enable

Consente di eseguire i benchmark in un unico loop per verificare se funzionano correttamente. Puoi utilizzarlo con i normali test nell'ambito della verifica.

  • Tipo di argomento: booleano
  • Il valore predefinito è: false

androidx.benchmark.enabledRules

Consente l'applicazione di filtri a un solo tipo di test: generazione del profilo di riferimento o test di Macrobenchmark. Sono supportati anche gli elenchi separati da virgole.

  • Tipo di argomento: stringa
  • Opzioni disponibili:
    • Macrobenchmark
    • BaselineProfile
  • Il valore predefinito è: non specificato

androidx.benchmark.junit4.SideEffectRunListener

Potresti ricevere risultati di benchmark incoerenti se durante l'esecuzione del benchmark vengono eseguite attività in background non correlate.

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

androidx.benchmark.perfettoSdkTracking.enable

Attiva i punti di traccia androidx.tracing.perfetto come il tracciamento della composizione di Jetpack Compose. Questo ha effetto solo quando StartupMode.COLD non viene utilizzato, poiché l'abilitazione dei punti di traccia riattiva il processo di destinazione.

  • Tipo di argomento: booleano
  • Il 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 saperne di più, consulta le descrizioni in Profile a Microbenchmark.

  • Tipo di argomento: stringa
  • Opzioni disponibili:
    • MethodTracing
    • StackSampling
    • None
  • Il valore predefinito è: None

androidx.benchmark.startupProfiles.enable

Consente di disattivare la generazione di profili di avvio durante il benchmarking.

  • Tipo di argomento: booleano
  • Il valore predefinito è: true

androidx.benchmark.suppressErrors

Accetta elenchi 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 benchmark con debuggable=false. L'argomento di cui è possibile eseguire il debug incide sulla velocità di esecuzione in modo tale che i miglioramenti del benchmark potrebbero non essere trasferiti nell'esperienza di un utente reale o far retrocedere le prestazioni della release.

    • LOW-BATTERY

      Quando la batteria è in esaurimento, i dispositivi spesso riducono le prestazioni per risparmiare batteria rimanente, ad esempio disattivando i core di grandi dimensioni. Questo si verifica anche quando i dispositivi sono collegati. Elimina questo errore solo se profila deliberatamente l'app con prestazioni ridotte.

    • EMULATOR

      L'errore EMULATOR indica che il benchmark è in esecuzione su un emulatore, che non è rappresentativo dei dispositivi degli utenti reali. I miglioramenti del benchmark di riferimento dell'emulatore potrebbero non essere trasferiti all'esperienza dell'utente reale o far retrocedere le prestazioni reali del dispositivo. Dovresti usare un dispositivo fisico per il benchmark. Elimina questo errore con estrema cautela.

    • NOT-PROFILEABLE

      Il pacchetto di destinazione $packageName è in esecuzione senza <profileable shell=true>. Profilabile è necessario su Android 10 e 11 per consentire a Macrobenchmark di acquisire informazioni di traccia dettagliate dal processo di destinazione, ad esempio le sezioni di tracciamento del sistema definite nell'app o nelle librerie. Elimina questo errore con estrema cautela.

    • METHOD-TRACING-ENABLED

      L'esecuzione di Macrobenchmark per l'app sottoposta a benchmark ha il tracciamento dei metodi abilitato. Questo causa un'esecuzione della VM più lenta del solito, pertanto considera solo le metriche dei file di traccia in termini relativi, ad esempio confrontando la velocità della prima esecuzione con la seconda. Se elimini questo errore, potresti ottenere risultati imprecisi se confronti i benchmark per le build con opzioni di tracciamento dei metodi diverse.

  • Il valore predefinito è: un elenco vuoto

DirOutputTest aggiuntivo

Consente di configurare la posizione in cui i report JSON sui benchmark e i risultati della profilazione vengono salvati sul dispositivo.

  • Tipo di argomento: stringa del percorso.
  • Valore predefinito: test della directory esterna dell'APK