Comparar seu app

Fazer uma comparação é uma maneira de inspecionar e monitorar a performance do seu app. É possível realizar comparações frequentes para ajudar a 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 aplicativo: Microbenchmark e Macrobenchmark.

Macrobenchmark

A biblioteca Macrobenchmark mede interações maiores do usuário final, como inicialização, interação com a IU e animações. A biblioteca oferece controle direto sobre o ambiente de performance que você está testando. Ela permite controlar a compilação, a inicialização e a interrupção do app para medir diretamente o tempo real de inicialização ou rolagem.

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

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 o melhor desempenho (Just in Time (JIT) aquecido, acessos ao disco em cache), que você pode ver 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 aplicativo, esses podem ser bons exemplos para comparação. Você também pode medir partes da sua IU. 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 do desempenho.

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 vai informar se você está melhorando um gargalo, como instabilidade ou tempo de inicialização do aplicativo. 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 aplicativo, 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

Macrobenchmark Microbenchmark
Função Medição de pontos de entrada ou interações de alto nível (por exemplo, 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
Versão mínima da API 23 14