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 |