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:
- 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. - Edite os argumentos de instrumentação clicando em
Figura 2. Edite o argumento de instrumentação.
ao lado do campo Instrumentation
arguments.
- Clique em
Figura 3. Adicione o argumento de instrumentação.
e adicione o argumento de instrumentação
necessário.
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
Recomendados para você
- Observação: o texto do link aparece quando o JavaScript está desativado
- Argumentos de instrumentação da biblioteca Macrobenchmark
- Criar um perfil de Microbenchmark
- Criar perfis de referência {:#creating-profile-rules}