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. Selecione a configuração do criador de perfil adicionando um argumento de instrumentação
androidx.benchmark.profiling.mode
do executor com um dos argumentos
MethodTracing
, StackSampling
ou
None
(conforme mostrado no snippet a seguir). Para ver mais
informações sobre as opções, consulte Escolher uma configuração de gravação.
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 ao lado dos resultados JSON. Abra esse arquivo com o Android Studio
usando File > Open para inspecionar os resultados de criação de perfil no CPU Profiler.
MethodTracing
Com o rastreamento de método, a comparação vai aquecer antes de capturar o rastreamento de um método, registrando todos os métodos chamados pela própria comparação. Os resultados de desempenho são significativamente afetados pela sobrecarga da captura de cada entrada/saída do método.
StackSampling
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
Não captura um arquivo de criação de perfil. As informações sobre tempo e alocações ainda são medidas.