Como criar perfis na Microbenchmark

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.