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