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 |
Recomendados para você
- Observação: o texto do link aparece quando o JavaScript está desativado.
- Criar perfis de referência {:#creating-profile-rules}
- Biblioteca JankStats
- Visão geral da avaliação do desempenho de apps