Argumentos de instrumentação de Microbenchmark

Configure o comportamento da Microbenchmark com os seguintes argumentos de instrumentação. Os argumentos podem ser adicionados à configuração do Gradle ou aplicados diretamente ao executar a instrumentação na linha de comando. Para definir esses argumentos para todas as execuções de teste de linha de comando e do Android Studio, adicione-os a testInstrumentationRunnerArguments:

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

Também é possível configurar argumentos de instrumentação ao executar as comparações no Android Studio. Para mudar os argumentos, siga estas etapas:

  1. Edite a configuração de execução clicando em Edit e selecionando a configuração que você quer editar.
    Figura 1. Edite a configuração de execução.
  2. Edite os argumentos de instrumentação clicando em ao lado do campo Instrumentation arguments.
    Figura 2. Edite o argumento de instrumentação.
  3. Clique em e adicione o argumento de instrumentação necessário.
    Figura 3. Adicione o argumento de instrumentação.

Se você estiver executando o comparativo de mercado na linha de comando, use -P android.testInstrumentationRunnerArguments.[name of the argument]:

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

Se você estiver invocando um comando de instrumento diretamente (o que pode ser o caso em ambientes de teste de CI), transmita o argumento para am instrument com -e:

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

Para mais informações sobre como configurar comparativos de mercado na CI, consulte Comparativo de mercado na CI.

additionalTestOutputDir

Configura o local onde os relatórios de comparação JSON e os resultados de criação de perfil são salvos no dispositivo.

  • Tipo de argumento: string do caminho do arquivo
  • Padrão: testar o diretório externo do APK

androidx.benchmark.cpuEventCounter.enable (experimental)

Conta os eventos da CPU especificados em androidx.benchmark.cupEventCounter.events. Requer acesso à raiz.

  • Tipo de argumento: booleano
  • Padrão: falso

androidx.benchmark.cpuEventCounter.events (experimental)

Especifica quais tipos de eventos de CPU devem ser contados. Para usar esse argumento, androidx.benchmark.cpuEventCounter.enable precisa ser definido como true.

  • Tipo de argumento:lista de strings separada por vírgulas
  • Opções disponíveis:
    • Instructions
    • CPUCycles
    • L1DReferences
    • L1DMisses
    • BranchInstructions
    • BranchMisses
    • L1IReferences
    • L1IMisses
  • Padrão:Instructions, CpuCycles, BranchMisses

androidx.benchmark.dryRunMode.enable

Permite que você execute comparativos de mercado em um único loop para verificar se eles funcionam corretamente.

Isso significa que:

  • Os erros de configuração não são aplicados (por exemplo, para facilitar a execução com testes de correção regulares em emuladores).
  • A comparação executa apenas um único loop, sem aquecimento
  • As medições e os rastros não são capturados para reduzir o tempo de execução

Isso otimiza a capacidade de teste e valida a lógica de comparação de mercado em relação à criação e à precisão da medição.

  • Tipo de argumento: booleano
  • Padrão: false

androidx.benchmark.iterations

Modifica as contagens de iterações desejadas por tempo para garantir uma quantidade consistente de trabalho. Isso normalmente é útil apenas com a criação de perfil ativada para ajudar a garantir que uma quantidade consistente de trabalho seja realizada em um rastro de criação de perfil ao comparar diferentes implementações ou execuções. Em outros cenários, isso provavelmente reduz a precisão ou estabilidade das medições.

  • Tipo de argumento: número inteiro
  • Padrão: não especificado

androidx.benchmark.junit4.SideEffectRunListener

Você poderá receber resultados inconsistentes de comparativos de mercado, se um trabalho em segundo plano não relacionado for executado enquanto o comparativo estiver em execução.

Para desativar o trabalho em segundo plano durante a execução do comparativo de mercado, defina o tipo de argumento de instrumentação listener como androidx.benchmark.junit4.SideEffectRunListener.

  • Tipo de argumento: string
  • Opções disponíveis:
    • androidx.benchmark.junit4.SideEffectRunListener
  • Padrão: não especificado

androidx.benchmark.output.enable

Permite gravar o arquivo JSON de resultado no armazenamento externo.

  • Tipo de argumento: booleano
  • Padrão: true

androidx.benchmark.profiling.mode

Permite capturar arquivos de rastreamento ao realizar comparações. Consulte Criar um perfil de Microbenchmark para conferir as opções disponíveis.

Algumas versões do SO Android não oferecem suporte ao rastreamento de método sem afetar as medições subsequentes. O Microbenchmark gera uma exceção para evitar isso. Portanto, use o argumento padrão para capturar rastros de método apenas quando for seguro fazer isso. Consulte Problema 316174880.

  • Tipo de argumento: string
  • Opções disponíveis:
    • MethodTracing
    • StackSampling
    • None
  • Padrão: versão segura de MethodTracing, que captura um traço de método somente se o dispositivo puder fazer isso sem afetar as medições.

androidx.benchmark.suppressErrors

Aceita uma lista de erros separada por vírgulas para transformar em avisos.

  • Tipo de argumento: lista de strings
  • Opções disponíveis:
    • DEBUGGABLE
    • LOW-BATTERY
    • EMULATOR
    • CODE-COVERAGE
    • UNLOCKED
    • SIMPLEPERF
    • ACTIVITY-MISSING
  • Padrão: uma lista vazia