Comparar seu app

Fazer uma comparação é uma maneira de testar o desempenho do seu aplicativo. É possível realizar comparações regularmente para ajudar a analisar e depurar problemas de desempenho 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.

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 usá-la para analisar o desempenho de situações específicas do app, e não aquelas que podem estar relacionadas a problemas gerais do sistema.

Macrobenchmark

A biblioteca Macrobenchmark mede interações maiores do usuário final, como inicialização, interação com a IU e animações. Ao contrário da biblioteca Microbenchmark, a Macrobenchmark oferece controle direto sobre o ambiente de desempenho em teste. Com ela, você pode controlar a compilação, inicialização e interrupção do aplicativo para medir diretamente a inicialização ou rolagem real do app em vez de apenas as funções quentes JIT, com todos os acessos ao disco armazenados em cache.

A biblioteca injeta eventos e monitora os resultados externamente de 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.

Comparação das bibliotecas

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