Inspecionar a velocidade de renderização

O Android inclui algumas opções do desenvolvedor no dispositivo que ajudam a visualizar onde o app pode encontrar problemas na renderização da IU, como a execução de mais trabalho de renderização que o necessário ou a execução de operações longas de linha de comando e GPU. Esta página descreve como depurar o excesso de renderização da GPU e a criação do perfil da renderização de GPU.

Para saber mais sobre as opções do desenvolvedor no dispositivo, incluindo como ativá-las, leia Configurar opções do desenvolvedor no dispositivo.

Velocidade da criação do perfil de renderização de GPU

A ferramenta de Criação do perfil de renderização de GPU mostra em um histograma com rolagem uma representação visual de quanto tempo é necessário para renderizar os quadros de uma janela de IU em relação a uma referência de 16,67 ms por quadro.

Em GPUs menos potentes, a taxa de preenchimento disponível (a velocidade com que a GPU pode preencher o buffer do frame) pode ser muito baixa. À medida que o número de pixels necessários para desenhar um frame aumenta, a GPU pode demorar mais para processar novos comandos, fazendo com que o resto do sistema aguarde até que a GPU consiga concluir a atividade.

A ferramenta de criação do perfil ajuda a identificar quando a GPU fica sobrecarregada tentando renderizar pixels ou por grande overdraw.

Ativar o criador de perfil

Antes de começar, verifique se está usando um dispositivo com o Android 4.1 (nível 16 da API) ou mais recente e se ativou as opções do desenvolvedor. Para começar a criação do perfil de renderização da GPU do dispositivo durante o uso do aplicativo, faça o seguinte:

  1. No dispositivo, vá para Configurações e toque em Opções do desenvolvedor.
  2. Na seção Monitoramento, selecione Criar perfil de renderização de GPU ou Criar perfil de renderização de HWUI, dependendo da versão do Android em execução no dispositivo.
  3. Na caixa de diálogo Criação do perfil de renderização de GPU, escolha Na tela em barras para sobrepor os gráficos na tela do dispositivo.
  4. Abra o aplicativo para o qual você quer criar o perfil.

Inspecionar a saída

Na imagem ampliada do gráfico da Criação do perfil de renderização de GPU, mostrada na figura 1, você pode conferir a seção colorida como mostrada no Android 6.0 (nível 23 da API).

Figura 1. Gráfico ampliado da Criação do perfil de renderização de GPU.

Veja a seguir algumas observações sobre a saída:

  • A ferramenta mostra um gráfico para cada aplicativo visível.
  • Cada barra vertical ao longo do eixo horizontal representa um frame, e a altura de cada barra vertical representa a quantidade de tempo necessária para a renderização do frame (em milissegundos).
  • A linha verde horizontal representa 16,67 milissegundos. Para alcançar 60 quadros por segundo, a barra vertical de cada quadro precisa estar acima dessa linha. Quando uma barra ultrapassar essa linha, podem ocorrer pausas nas animações.
  • A ferramenta destaca frames que excederam o limite de 16,67 milissegundos aumentando a largura da barra e reduzindo a transparência.
  • Cada barra tem componentes coloridos que mapeiam uma etapa do pipeline de renderização. O número de componentes varia de acordo com o nível da API do dispositivo.

A tabela abaixo oferece descrições de cada segmento de uma barra vertical na saída do criador de perfil ao usar um dispositivo com o Android 6.0 ou mais recente.

Componente da barraEtapa de renderizaçãoDescrição
Swap Buffers Representa o tempo que a CPU aguarda para que a GPU conclua o trabalho. Se essa barra fica alta, isso significa que o app está fazendo trabalho excessivo na GPU.
Command Issue Representa o tempo que o renderizador 2D do Android leva para emitir comandos para que o OpenGL mostre e renderize novamente listas de exibição. A altura dessa barra é diretamente proporcional à soma do tempo necessário para a execução de cada lista de exibição. Mais listas de exibição equivalem a uma barra vermelha mais alta.
Sync & Upload Representa o tempo necessário para fazer upload das informações de bitmap para a GPU. Um segmento grande indica que o app está passando um tempo considerável carregando grandes quantidades de gráficos.
Desenhar Representa o tempo usado para gravar comandos de desenho, como drawLine. No Compose, essa fase às vezes inclui operações de medição e layout. Se essa barra for alta, capture um rastreamento do sistema e inspecione-o usando o Perfetto para uma análise detalhada.
Measure/Layout Representa o tempo gasto no posicionamento e na determinação do tamanho dos componentes da interface durante a fase de layout, que inclui a execução de modificadores de medição e posicionamento. Um segmento grande indica cálculos complexos nesses modificadores ou uma árvore de layout excessivamente profunda que exige recálculo frequente.
Input Handling & Animation Representa o tempo necessário para avaliar chamadas da API de animação ou para processar entrada de ponteiro e seus callbacks. Se esse segmento for grande, é possível que uma animação ou um callback de entrada personalizado esteja demorando muito tempo para ser processado. O cálculo de estado e o mapeamento de dados ao rolar um LazyColumn ou LazyRow também costumam ocorrer durante esse segmento e são uma fonte mais comum de lentidão para o segmento.
Misc Time/VSync Delay Representa o tempo que o app leva para executar operações entre dois frames consecutivos. Pode ser um indicador de excesso de processamento na linha de execução de interface, que poderia ser descarregado em uma linha de execução diferente.

Tabela 1. Barras de componentes no Android 6.0 ou versões mais recentes.

Para mais informações sobre como interpretar as informações fornecidas pela ferramenta de criação do perfil, leia Analisar com a Criação do perfil de renderização de GPU.