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 |