Arguments d'instrumentation de Microbenchmark

Configurez le comportement de Microbenchmark avec les arguments d'instrumentation suivants. Vous pouvez les ajouter à votre configuration Gradle ou les appliquer directement lorsque vous exécutez une instrumentation à partir de la ligne de commande. Pour définir ces arguments pour toutes les exécutions de test Android Studio et de ligne de commande, ajoutez-les à testInstrumentationRunnerArguments :

android {
    defaultConfig {
        // ...
        testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
    }
}

Vous pouvez également configurer des arguments d'instrumentation lorsque vous exécutez les analyses comparatives à partir d'Android Studio. Pour modifier les arguments, procédez comme suit :

  1. Modifiez la configuration d'exécution en cliquant sur Edit (Modifier), puis en sélectionnant la configuration à modifier.
    Figure 1 : Modifier la configuration d'exécution.
  2. Modifiez les arguments d'instrumentation en cliquant sur à côté du champ Instrumentation arguments (Arguments d'instrumentation).
    Figure 2 : Modifiez l'argument d'instrumentation.
  3. Cliquez sur et ajoutez l'argument d'instrumentation requis.
    Figure 3 : Ajoutez l'argument d'instrumentation.

Si vous exécutez le benchmark à partir de la ligne de commande, utilisez -P android.testInstrumentationRunnerArguments.[name of the argument]:

./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.profiling.mode=StackSampling

Si vous appelez directement une commande d'instrumentation (ce qui peut être le cas dans les environnements de test CI), transmettez l'argument à am instrument avec -e:

adb shell am instrument -e androidx.benchmark.profiling.mode StackSampling -w com.example.macrobenchmark/androidx.benchmark.junit4.AndroidBenchmarkRunner

Pour en savoir plus sur la configuration des analyses comparatives dans l'intégration continue, consultez la section Analyse comparative dans l'intégration continue.

additionalTestOutputDir

Configure l'emplacement sur l'appareil où sont enregistrés les rapports d'analyse comparative JSON et les résultats de profilage.

  • Type d'argument : chaîne du chemin d'accès au fichier
  • Valeur par défaut : tester le répertoire externe de l'APK

androidx.benchmark.dryRunMode.enable

Vous permet d'exécuter des benchmarks dans une seule boucle afin de vérifier qu'elles fonctionnent correctement.

Autrement dit :

  • Les erreurs de configuration ne sont pas appliquées (par exemple, pour faciliter l'exécution avec des tests d'exactitude réguliers sur les émulateurs)
  • Le benchmark n'exécute qu'une seule boucle, sans préchauffage
  • Les mesures et les traces ne sont pas capturées pour réduire le temps d'exécution.

Cela optimise le débit de test et la validation de la logique de référence par rapport à la création et à l'exactitude des mesures.

  • Type d'argument : booléen
  • Valeur par défaut : false

androidx.benchmark.iterations

Ignore le nombre d'itérations cibles basées sur le temps pour garantir un volume de travail cohérent. En général, cette approche n'est utile que lorsque le profilage est activé, pour vous assurer que la quantité de travail est effectuée de manière cohérente dans une trace de profilage lorsque vous comparez différentes intégrations ou exécutions. Dans d'autres scénarios, cela réduit probablement la précision ou la stabilité des mesures.

  • Type d'argument : entier
  • Valeur par défaut : non spécifié

androidx.benchmark.junit4.SideEffectRunListener

Vous pouvez obtenir des résultats de benchmark incohérents si des tâches non liées en arrière-plan sont exécutées en même temps que le benchmark.

Pour désactiver les tâches en arrière-plan lors du benchmark, définissez le type d'argument d'instrumentation listener sur androidx.benchmark.junit4.SideEffectRunListener.

  • Type d'argument : chaîne
  • Options disponibles :
    • androidx.benchmark.junit4.SideEffectRunListener
  • Valeur par défaut : non spécifié

androidx.benchmark.output.enable

Permet d'écrire le fichier JSON de résultats dans un espace de stockage externe.

  • Type d'argument : booléen
  • Valeur par défaut : true

androidx.benchmark.profiling.mode

Permet de capturer des fichiers de suivi lors de l'exécution des benchmarks. Consultez la page Profiler un microbenchmark pour connaître les options disponibles.

  • Type d'argument : chaîne
  • Options disponibles :
    • MethodTracing
    • StackSampling
    • None
  • Valeur par défaut : None

androidx.benchmark.suppressErrors

Accepte une liste d'erreurs séparées par une virgule qui deviennent des avertissements.

  • Type d'argument : liste de chaînes
  • Options disponibles :
    • DEBUGGABLE
    • LOW-BATTERY
    • EMULATOR
    • CODE-COVERAGE
    • UNLOCKED
    • SIMPLEPERF
    • ACTIVITY-MISSING
  • Valeur par défaut : liste vide

androidx.benchmark.startupMode.enable (obsolète)

Permet de reconfigurer le comportement de la boucle pour assurer l'analyse comparative du code au démarrage. Les benchmarks sont exécutés sans boucle de préchauffage pour 10 mesures. Pour minimiser les frais généraux dans les microbenchmarks, la moyenne de la boucle est désactivée.

  • Type d'argument : booléen
  • Valeur par défaut : false