Comparar seu app

Fazer uma comparação é uma maneira de inspecionar e monitorar a performance do seu app. É possível realizar comparações regularmente para analisar e depurar problemas de performance e garantir que não sejam introduzidas regressões em mudanças recentes.

O Android oferece duas bibliotecas e abordagens de comparação para analisar e testar diferentes tipos de situações no seu app: Microbenchmark e Macrobenchmark.

Macrobenchmark

A biblioteca Macrobenchmark mede interações maiores do usuário final, como inicialização, interação com a interface e animações. Ela oferece controle direto sobre o ambiente de performance testado. Ela permite controlar a compilação, além da inicialização e interrupção do app, para medir diretamente a inicialização ou rolagem real.

A biblioteca Macrobenchmark injeta eventos e monitora os resultados de forma externa a um app específico criado com os testes. Portanto, ao programar as comparações, você não chama o código do app diretamente, navegando no app como um usuário.

Microbenchmark

A biblioteca Microbenchmark permite comparar o código do app diretamente em um loop. Ela foi projetada para medir o trabalho da CPU que avalia a melhor performance, como Just in Time (JIT) aquecido e acessos ao disco em cache, que pode aparecer com um loop interno ou uma função quente específica. ​​A biblioteca só pode medir o código que você pode chamar diretamente de forma isolada.

Se o app precisar processar uma estrutura de dados complexa ou tiver algum algoritmo específico de computação intensa que é chamado várias vezes durante a execução do app, esses podem ser bons casos para comparação. Você também pode medir partes da sua interface. Por exemplo, você pode medir o custo da vinculação do item RecyclerView, quanto tempo leva para inflar um layout ou como a demanda da transmissão de layout e medida da classe View funciona do ponto de vista da performance.

No entanto, não vai ser possível avaliar como os casos comparados contribuem para a experiência geral do usuário. Em alguns cenários, a comparação não informa se você está melhorando um gargalo, como instabilidade ou tempo de inicialização do app. Por esse motivo, é fundamental identificar esses gargalos primeiro com o Android Profiler. Depois de encontrar o código que você quer investigar e otimizar, o loop comparado vai poder ser executado repetidamente, de maneira rápida e fácil, para criar resultados menos ruidosos, permitindo que você se concentre em uma área de melhoria.

A biblioteca Microbenchmark relata apenas informações sobre seu app, não sobre o sistema geral. Portanto, é melhor usar essa biblioteca para analisar a performance de situações específicas do app, e não aquelas que podem estar relacionadas a problemas gerais do sistema.

Comparação das bibliotecas Benchmark

Macrobenchmark Microbenchmark
Versão da API 23 e mais recente 14 e mais recente
Função Medição de pontos de entrada ou interações de alto nível, como inicialização de atividades ou rolagem de uma lista Medição de funções individuais
Escopo Teste do app completo fora do processo Teste de trabalho da CPU no processo
Velocidade Velocidade de iteração média (pode passar de um minuto) Velocidade de iteração rápida (leva geralmente menos de 10 segundos)
Rastreamento Os resultados vêm com rastreamento de perfil Amostragem de método e rastreamento opcionais