Por padrão, as microcomparações fornecem informações sobre o tempo e as alocações do código executado. Se você quiser investigar por que o código medido está sendo executado lentamente, faça a comparação com o CPU Profiler anexado.
Para selecionar a configuração do criador de perfil,
adicione o argumento androidx.benchmark.profiling.mode
do executor de instrumentação com um dos argumentos
MethodTracing
, StackSampling
ou
None
, conforme mostrado no snippet abaixo.
Para mais
informações sobre as opções, consulte Escolher uma configuração de gravação.
MethodTracing
equivale a "Trace Java Methods" e StackSampling
equivale a "Sample Java Methods", conforme definido neste documento.
Groovy
android { defaultConfig { // must be one of: 'None', 'StackSampling', or 'MethodTracing' testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"]= 'StackSampling' } }
Kotlin
android { defaultConfig { // must be one of: 'None', 'StackSampling', or 'MethodTracing' testInstrumentationRunnerArguments["androidx.benchmark.profiling.mode"] = "StackSampling" } }
Quando você cria um perfil para uma comparação, um arquivo de saída .trace
é copiado para o host no
diretório junto dos resultados JSON. Para inspecionar os resultados da criação de perfil no
CPU Profiler no Android Studio, selecione File > Open. Para saber mais sobre
como ler e entender rastros, consulte Inspecionar rastros.
MethodTracing
O rastreamento de métodos é útil quando você está tentando otimizar o código, porque ele pode ajudar a identificar os métodos que demoram mais para serem executados do que outros. Assim, você pode se concentrar na otimização dos métodos que têm maior impacto no desempenho.
A criação de perfil ocorre em sequência após a medição do código. Portanto, o teste gera resultados precisos de tempo e criação de perfil.
StackSampling
O rastreamento de amostra também pode ajudar a identificar métodos caros sem o overhead de performance do rastreamento de método. No entanto, se o app entrar em um método após a captura de uma pilha de chamadas e o método sair antes da próxima captura, a chamada do método não será registrada. Para rastrear adequadamente métodos com ciclos de vida curtos, use o rastreamento de método em vez do rastreamento de amostra.
Com a amostragem de pilhas, a comparação vai coletar amostras das pilhas de chamadas após a conclusão do aquecimento. Você pode controlar a frequência e duração da amostragem usando argumentos de instrumentação.
No Android 10 (API 29) e versões mais recentes, a amostragem de pilhas usa o Simpleperf para amostragens de
pilhas de chamadas do app, incluindo o código C++. No Android 9 (API 28) e versões mais antigas, ela usa
Debug.startMethodTracingSampling
para capturar amostras de pilhas.
Você pode configurar esse modo de criação de perfil adicionando outros argumentos de instrumentação:
androidx.benchmark.profiling.sampleFrequency
- Número de amostras de pilhas a serem capturadas por segundo.
- Tipo de argumento: número inteiro
- O padrão é de 1.000 amostras por segundo
androidx.benchmark.profiling.sampleDurationSeconds
- Duração da comparação a ser executada
- Tipo de argumento: número inteiro
- O padrão é de 5 segundos.
Nenhum
Esse argumento não captura um arquivo de criação de perfil. As informações sobre tempo e alocações ainda são medidas.
Recomendados para você
- Observação: o texto do link aparece quando o JavaScript está desativado
- Argumentos de instrumentação de Microbenchmark
- Executar comparativos na integração contínua