Configurar o ambiente para testes de performance
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Você pode identificar possíveis gargalos e melhorar a performance geral do app
gravando a atividade do dispositivo durante um curto período e coletando rastros do
tempo de inicialização do app. Nesta página, mostramos como
configurar seu ambiente para testes de performance.
Usar a biblioteca Macrobenchmark
A biblioteca
Macrobenchmark mede
interações maiores do usuário final, como inicialização, interação com a interface 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 o encerramento do app
para medir o tempo exato de inicialização. Isso também minimiza o
ruído e as diferenças entre execuções de teste.
Usar dispositivos intermediários para identificar possíveis problemas de performance
Teste a performance em cada tipo de dispositivo do seu interesse. Dispositivos sofisticados com componentes
rápidos podem ocultar problemas de performance em dispositivos mais antigos, lentos ou com pouca RAM.
Dispositivos mais simples podem levar mais tempo para carregar dados ou executar códigos, facilitando a
identificação de gargalos. Otimizar a performance para dispositivos mais simples geralmente também
beneficia a otimização para dispositivos sofisticados.
Reduzir o ruído
- Rede: teste seus apps ou processos com velocidades de conexão Wi-Fi fortes e
estáveis. Se o tempo de inicialização do app incluir uma solicitação de rede, é nesse
momento que a variabilidade poderá ocorrer.
- Uso de RAM: não execute outros apps em segundo plano no dispositivo
durante o teste de performance da inicialização.
- Bateria: confira se o dispositivo está carregado para evitar que a performance seja limitada por
falta de energia do hardware.
Testar em builds de lançamento
Use builds de lançamento para testar a performance. Os builds de depuração são inadequados para
depurar
a performance, já que não
oferecem otimização de compilação têm um impacto significativo.
No entanto, não há problema em usar um build de lançamento não ofuscado para identificar classes e
nomes de operações. Especificamente, recomendamos ativar a minificação
(R8) e desativar a ofuscação com
-dontobfuscate
no arquivo Proguard.
É mais fácil identificar layouts e recursos quando o build não está
ofuscado.
Inclua a flag
profileable no manifesto
para que seus eventos personalizados fiquem visíveis em builds não depuráveis. Essa flag está
disponível no Android 10 (nível 29 da API) e mais recentes.
Adicionar rastros personalizados às operações do app
Adicione rastros personalizados ao app para
facilitar a identificação de quais operações são realizadas em comparação com
outras bibliotecas. Isso oferece mais contexto sobre o que o app está fazendo
a todo momento.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-07-27 UTC."],[],[],null,["# Set up your environment for performance testing\n\nYou can identify potential bottlenecks and improve overall app performance by\nrecording device activity over a short period of time and [collecting traces of\nyour app's startup period](/topic/performance/tracing). This page shows how to\nset up your environment for performance testing.\n\nUse the Macrobenchmark library\n------------------------------\n\nThe [Macrobenchmark\nlibrary](/topic/performance/benchmarking/macrobenchmark-overview) measures\nlarger end-user interactions, such as startup, interacting with the UI, and\nanimations. The library provides direct control over the performance environment\nyou're testing. It lets you control compiling, starting, and stopping your app\nto directly measure precise app startup time. It also works to minimize the\nnoise and differences between test runs.\n\nUse mid-range devices to identify potential performance issues\n--------------------------------------------------------------\n\nTest performance on each device type you care about. High-end devices with fast\ncomponents can hide performance problems on earlier, slower, or low RAM devices.\nLower-end devices can take longer to load data or run code, making it easier to\nidentify bottlenecks. Optimizing performance for low-end devices usually also\nbenefits optimization for high-end devices.\n\nReduce noise\n------------\n\n- Network: test your apps or processes with strong and stable internet Wi-Fi speeds. If the app startup time includes a network request, note this as a place where variability might occur.\n- RAM usage: don't have any other apps running in the background of your device while testing app startup performance.\n- Battery: ensure your device is charged to avoid any hardware-specific low power performance throttling.\n\nTest on release builds\n----------------------\n\nUse release builds to test performance. Debug builds are [unsuitable for\nperformance\ndebugging](/studio/profile/measuring-performance#apk-considerations), as they\ndon't provide compilation optimization and significantly impact performance.\n\nHowever, it's okay to use an unobfuscated release build to identify classes and\noperation names. Specifically, we recommend enabling [minify\n(R8)](/studio/build/shrink-code) and disabling obfuscation, with\n[`-dontobfuscate`](/studio/build/shrink-code#obfuscate) in the proguard file.\nIt's easier to identify layouts, assets, and resources if the build is\nunobfuscated.\n\nMake sure you include the\n[profileable](/guide/topics/manifest/profileable-element) flag in the manifest\nso that your custom events are visible in non-debuggable builds. This flag is\navailable on Android 10 (API level 29) and later.\n\nAdd custom traces to your app operations\n----------------------------------------\n\nAdd [custom traces](/topic/performance/tracing/custom-events) within your app to\nmake it easier to identify what operations are performed by your app compared to\nother libraries. This helps give you more context about what the app is doing at\nall times."]]