Argumentos de instrumentação de Microbenchmark

Configure o comportamento do 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 am instrument diretamente (o que pode acontecer 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

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:false

androidx.benchmark.cpuEventCounter.events (experimental)

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

  • Tipo de argumento:lista de strings separadas 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:

  • Erros de configuração não são aplicados (por exemplo, para facilitar a execução com testes de correção regulares em emuladores).
  • O comparativo executa apenas um loop, sem aquecimento.
  • Medições e rastreamentos não são capturados para reduzir o tempo de execução

Isso otimiza a capacidade de teste e valida a lógica de comparativo em relação à correção de build e medição.

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

androidx.benchmark.killExistingPerfettoRecordings

Por padrão, o comparativo de mercado encerra todas as gravações do Perfetto (rastreamento do sistema) ao iniciar um novo rastreamento para reduzir a interferência. Para desativar esse comportamento, transmita false.

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

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étodos sem que as medições subsequentes sejam afetadas. O microbenchmark gera uma exceção para evitar isso. Portanto, use o argumento padrão para capturar rastreamentos de método somente quando for seguro fazer isso. Consulte Problema nº 316174880.

  • Tipo de argumento: string
  • Opções disponíveis:
    • MethodTracing
    • StackSampling
    • None
  • O padrão é:versão segura de MethodTracing que só captura um rastreamento de método 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

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

listener

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