Inspecionar atividades de CPU com o CPU Profiler

A otimização do uso de CPU do aplicativo oferece muitas vantagens, como uma experiência do usuário mais rápida e uniforme e a preservação da duração da bateria do dispositivo.

Você pode usar o CPU Profiler para inspecionar o uso de CPU e as atividades dos encadeamentos em tempo real durante a interação com o aplicativo, ou inspecionar os detalhes nos rastreamentos de método, de função e de sistema gravados.

Os tipos específicos de informações que o CPU Profiler grava e mostra são determinados pela configuração de gravação escolhida:

  • System Trace: captura dados detalhados que permitem inspecionar como o aplicativo interage com os recursos do sistema.
  • Method and function traces: para cada encadeamento no processo do aplicativo, é possível descobrir quais métodos (Java) ou funções (C/C++) são executados durante um período e os recursos de CPU que cada método ou função consome durante a execução. Você também pode usar rastreamentos de método e função para identificar autores e recebedores de chamadas. Um autor da chamada é um método ou função que invoca outro método ou função. Um recebedor da chamada é aquele invocado pelo outro método ou função. Você pode usar essas informações para determinar quais métodos ou funções são responsáveis por invocar determinadas tarefas com uso intensivo de recursos com muita frequência e otimizar o código do aplicativo para evitar trabalho desnecessário.

    Ao gravar o rastreamento do método, você pode escolher entre a gravação amostrada ou instrumentada. Ao gravar rastreamento de função, você só pode usar a gravação amostrada.

Para mais detalhes sobre como usar e escolher cada uma dessas opções de rastreamento, consulte Escolher uma configuração de gravação.

Visão geral do CPU Profiler

Para abrir o CPU Profiler, siga estas etapas:

  1. Selecione View > Tool Windows > Profiler ou clique em Profile na barra de ferramentas.

    Caso seja pedido pela caixa de diálogo Select Deployment Target, escolha o dispositivo no qual você quer criar o perfil para o aplicativo. Se você estiver conectado a um dispositivo por USB, mas o dispositivo não for exibido na lista, verifique se a depuração de USB foi ativada.

  2. Clique em qualquer lugar da linha do tempo da CPU para abrir o CPU Profiler.

Ao ser aberto, o CPU Profiler começa imediatamente a exibir o uso de CPU e as atividades de encadeamentos do aplicativo. Você deve ver algo semelhante à figura 1.

Figura 1. Linhas do tempo no CPU Profiler.

Como indicado na figura 1, a visualização padrão do CPU Profiler inclui as seguintes linhas do tempo:

  1. Linha do tempo de eventos: mostra as atividades do aplicativo à medida que passam por estados diferentes do ciclo de vida e indica as interações do usuário com o dispositivo, incluindo eventos de rotação de tela. Para saber como ativar a linha do tempo do evento em dispositivos que executam o Android 7.1 (nível 25 da API) e versões anteriores, consulte Ativar criação de perfil avançada.
  2. Linha do tempo da CPU: mostra em tempo real o uso da CPU pelo aplicativo como porcentagem do tempo total de CPU disponível e o número total de encadeamentos usado pelo aplicativo. Além disso, a linha do tempo também mostra o uso da CPU por outros processos (como processos de sistema ou outros aplicativos) para que você possa compará-lo ao uso do aplicativo. É possível inspecionar dados históricos de uso de CPU movendo o mouse ao longo do eixo horizontal da linha do tempo.
  3. Linha do tempo de atividade de encadeamentos: lista cada encadeamento que pertence ao processo do aplicativo e indica as atividades dele ao longo de uma linha do tempo com as cores listadas abaixo. Após gravar um rastreamento, você poderá selecionar um encadeamento dessa linha do tempo para inspecionar os dados dele no painel de rastreamento.
    • Verde: o encadeamento está ativo ou pronto para usar a CPU. Ou seja, está no estado "executando" ou "executável".
    • Amarelo: o encadeamento está ativo, mas aguarda uma operação de E/S, como E/S de disco ou rede, para poder concluir o trabalho.
    • Cinza: o encadeamento está suspenso e não está consumindo nenhum tempo de CPU. Às vezes, isso ocorre quando o encadeamento precisa acessar um recurso ainda não disponível. O encadeamento entra em suspensão voluntária ou é suspenso pelo kernel até que o recurso necessário fique disponível.

    O CPU Profiler também informa o uso de CPU dos encadeamentos adicionados pelo Android Studio e pela plataforma do Android ao processo do aplicativo, como JDWP, Profile Saver, Studio:VMStats, Studio:Perfa e Studio:Heartbeat (embora os nomes exatos exibidos na linha do tempo de atividade de encadeamentos possam variar). O Android Studio relata esses dados para que você possa identificar quando a atividades e o uso de CPU pelos encadeamentos são realmente causados pelo código do aplicativo.

Gravar rastreamentos

Para começar a gravar um rastreamento, escolha uma configuração de gravação no menu suspenso na parte superior do CPU Profiler e clique em Record.

Figura 2. O CPU Profiler exibe o status, a duração e o tipo de gravação que está sendo feita.

Interaja com o aplicativo e clique em Stop quando terminar. O criador de perfil seleciona automaticamente o intervalo de tempo gravado e exibe as informações de rastreamento no painel de rastreamento, como mostrado na figura 3. Se você quer inspecionar o rastreamento para um encadeamento diferente, basta selecioná-lo na linha do tempo de atividade de encadeamentos.

Figura 3. O CPU Profiler após a gravação de um rastreamento de método.

  1. Intervalo selecionado: determina a parte do tempo gravado que você quer inspecionar no painel de rastreamento. Na primeira gravação de rastreamento de um método, o CPU Profiler seleciona automaticamente toda a duração da gravação na linha do tempo da CPU. Para inspecionar apenas os dados de rastreamento de parte do intervalo de tempo gravado, clique nas arestas da região destacada e arraste-as.
  2. Carimbo de data/hora: indica o horário de início e término do rastreamento gravado em relação ao momento em que o criador de perfil começou a coletar informações de uso de CPU. Para selecionar a gravação inteira, clique no carimbo de data/hora.
  3. Painel de rastreamento: exibe dados de rastreamento para o intervalo de tempo e o encadeamento selecionados. Esse painel é exibido somente após a gravação de pelo menos um rastreamento. Nesse painel, é possível selecionar a forma de visualização de cada rastreamento de pilha (usando as guias de rastreamento) e como você quer medir o tempo de execução (usando o menu suspenso de referência de tempo).
  4. Guias do painel de rastreamento: escolha como exibir os detalhes do rastreamento. Para detalhes sobre cada opção, consulte Inspecionar rastreamentos.
  5. Menu de referência de tempo: selecione uma das seguintes opções para determinar como as informações de tempo de cada chamada são medidas:
    • Wall clock time: as informações de tempo representam o tempo decorrido real.
    • Thread time: as informações de tempo representam o tempo decorrido real menos qualquer parte desse tempo em que o encadeamento não consumiu recursos de CPU. Para qualquer chamada, o Thread time será sempre menor ou igual ao Wall clock time. O uso do Thread time oferece melhor compreensão da forma como a maior parte do uso real de CPU por um encadeamento é consumida por determinado método.
  6. Filtro: filtra os dados de rastreamento por função, método, classe ou nome do pacote. Por exemplo, se você quiser identificar rapidamente dados de rastreamento relacionados a uma chamada específica, clique em Filter ou pressione Ctrl + F (Command + F no Mac) e digite o nome no campo de pesquisa. Nas guias Call Chart e Flame Chart, as pilhas de chamadas que incluem uma chamada, um pacote ou uma classe que corresponde à consulta de pesquisa são enfatizadas. Nas guias Top Down e Bottom Up, essas pilhas de chamada são priorizadas em relação a outros resultados de rastreamento. Também é possível ativar as seguintes opções marcando a caixa apropriada ao lado do campo de pesquisa:
    • Regex: use esta opção para incluir expressões regulares em sua pesquisa.
    • Match case: use esta opção se sua pesquisa faz distinção entre maiúsculas e minúsculas.

Escolher uma configuração de gravação

Antes de começar a gravar informações de rastreamento, escolha a configuração de gravação apropriada para as informações de criação de perfil que você quer capturar:

  • Sample Java Methods: captura a pilha de chamadas do aplicativo em intervalos frequentes durante a execução de código baseada em Java do aplicativo. O criador de perfil compara conjuntos de dados capturados para conseguir informações de uso de tempo e uso de recursos pela execução do código do aplicativo.

    Uma questão inerente ao rastreamento baseado em amostra é que, se o aplicativo entrar em um método após a captura da pilha de chamadas e sair desse método antes da próxima captura, essa chamada ao método não será registrada pelo criador de perfil. Se você estiver interessado em métodos de rastreamento com ciclos de vida curtos, use o rastreamento instrumentado.

  • Trace Java Methods: instrumenta seu aplicativo em tempo de execução para gravar um carimbo de data/hora no início e no término de cada chamada de método. Os carimbos de data/hora são coletados e comparados para gerar dados de rastreamento de métodos, incluindo informações sobre tempo e uso de CPU.

    Observe que a sobrecarga associada à instrumentação de cada método afeta o desempenho do tempo de execução e pode influenciar os dados de criação do perfil, o que será ainda mais perceptível para métodos com ciclos de vida relativamente breves. Além disso, se o aplicativo executar um grande número de métodos em um curto espaço de tempo, o criador de perfil poderá exceder rapidamente o limite de tamanho de arquivo e deixar de gravar dados de rastreamento adicionais.

  • Sample C/C++ Functions: captura os rastreamentos amostrados dos encadeamentos nativos do aplicativo. Para usar essa configuração, é necessário implantar seu aplicativo em um dispositivo com o Android 8.0 (nível de API 26) ou posterior.

    Internamente, essa configuração usa o simpleperf para rastrear o código nativo do seu aplicativo. Caso queira especificar opções adicionais para simpleperf, como amostragem de CPUs específicas do dispositivo ou especificação de durações de amostragem com alta precisão, você pode usar o simpleperf a partir da linha de comando.

  • Trace System Calls: captura dados detalhados que permitem inspecionar como o aplicativo interage com os recursos do sistema. Você pode inspecionar os tempos e as durações exatas dos estados dos encadeamentos, visualizar onde os gargalos da CPU estão em todos os núcleos e adicionar eventos de rastreamento personalizados para analisar. Essas informações podem ser essenciais para solucionar problemas de desempenho. Para usar essa configuração, é necessário implantar seu aplicativo em um dispositivo com o Android 8.0 (nível de API 26) ou posterior.

    Ao usar essa configuração de rastreamento, você pode marcar visualmente rotinas de código importantes na linha do tempo do criador de perfil instrumentando seu código. Para instrumentar o código C/C++, use a API de rastreamento nativo fornecida pelo trace.h. Para instrumentar o código Java, use a classe Trace. Para mais informações, consulte Instrumentar o código do aplicativo.

    Essa configuração de rastreamento é criada no systrace. Você pode usar o utilitário de linha de comando systrace para especificar opções além das fornecidas no CPU Profiler. Os dados adicionais no nível do sistema fornecidos por systrace podem ajudar a inspecionar processos nativos do sistema e a solucionar problemas de quadros perdidos ou atrasados.

    Em dispositivos com o Android 9 (API de nível 28) ou posterior, você pode usar um aplicativo do sistema chamado System Tracing para gravar os rastreamentos do sistema em um dispositivo.

Criar, editar ou visualizar uma configuração de gravação

Para criar, editar e visualizar configurações de gravação, abra a caixa de diálogo CPU Recording Configurations selecionando Edit configurations no menu suspenso de configurações de gravação, na parte superior do CPU Profiler.

Para visualizar as configurações de uma configuração de gravação existente, selecione-a no painel esquerdo da caixa de diálogo CPU Recording Configurations.

Para criar uma nova configuração de gravação, siga as seguintes etapas:

  1. Clique em Add na parte superior esquerda da caixa de diálogo. Será criada uma nova configuração com algumas definições padrão.
  2. Atribua um nome à configuração.
  3. Selecione uma Trace Technology.
  4. Nas configurações de gravação amostrada, especifique Sampling interval em microssegundos (μs). Esse valor representa a duração entre cada amostra da pilha de chamadas do aplicativo. Quanto menor o intervalo especificado, mais rápido você alcançará o limite de tamanho de arquivo para os dados gravados.
  5. Especifique File size limit em megabytes (MB) para os dados gravados no dispositivo conectado. Quando você interromper a gravação, o Android Studio analisará esses dados e os exibirá na janela do criador de perfil. Portanto, se você aumentar o limite e gravar uma grande quantidade de dados, o Android Studio demorará muito mais para analisar o arquivo e poderá parar de responder.

    Observação: se você usar um dispositivo conectado executando o Android 8.0 (API nível 26) ou versões posteriores, não haverá limite para o tamanho do arquivo dos dados de rastreamento, e esse valor será ignorado. No entanto, ainda será necessário tomar cuidado com a quantidade de dados coletada pelo dispositivo em cada gravação. O Android Studio pode ter dificuldades para analisar arquivos de rastreamento grandes. Por exemplo, se você estiver gravando um rastreamento amostrado com um intervalo de amostragem curto ou um rastreamento instrumentado enquanto o aplicativo chama vários métodos em um curto período, serão gerados rapidamente arquivos de rastreamento grandes.

  6. Para aceitar as alterações e continuar fazendo alterações em outras configurações, clique em Apply. Clique em OK para fechar a caixa de diálogo.

Gravar a atividade da CPU com a API Debug

Você pode usar a API Debug para dar ao seu aplicativo a capacidade de iniciar e interromper a gravação da atividade da CPU no CPU Profiler.

O CPU Profiler começa a gravar quando seu aplicativo chama startMethodTracing(String tracePath) e interrompe a gravação quando seu aplicativo chama stopMethodTracing(). Enquanto grava a atividade da CPU que acionou o uso dessa API, o CPU Profiler mostra a API Debug como a configuração de gravação de CPU selecionada.

Para controlar a gravação da atividade da CPU com a API Debug, implante seu aplicativo instrumentado em um dispositivo com Android 8.0 (nível API 26) ou versões posteriores.

Para mais informações, consulte Gerar registros de rastreamento com a instrumentação do aplicativo.

Gravar a atividade da CPU durante a inicialização do app

Para começar a gravar a atividade da CPU automaticamente durante a inicialização do aplicativo, siga estas etapas:

  1. Selecione Run > Edit Configurations.
  2. Na guia Profiling, marque a caixa ao lado de Start recording a method trace on startup.
  3. Selecione uma configuração de gravação da CPU no menu.
  4. Clique em Apply.
  5. Implante seu app em um dispositivo com Android 8.0 (nível de API 26) ou posterior selecionando Run > Profile.

Exportar rastreamentos

Depois de gravar a atividade da CPU com o CPU Profiler, é possível exportar os dados como um arquivo .trace para compartilhá-los com outras pessoas ou inspecioná-los posteriormente.

Para exportar um arquivo de rastreamento da linha do tempo da CPU, faça o seguinte:

  1. Na linha do tempo da CPU, clique com o botão direito do mouse no rastreamento do método ou do sistema que você quer exportar.
  2. Selecione Export trace no menu suspenso.
  3. Navegue até o local onde quer salvar o arquivo, especifique o nome dele e clique em OK.

Para exportar um arquivo de rastreamento do painel Sessions, faça o seguinte:

  1. No painel Sessions, clique com o botão direito do mouse no rastreamento gravado que você quer exportar.
  2. Clique no botão Export method trace ou Export system trace à direita da entrada da sessão.
  3. Navegue até o local onde quer salvar o arquivo, especifique o nome dele e clique em OK.

Importar rastreamentos

Você pode importar arquivos .trace criados com a API Debug ou o CPU Profiler.

Para importar o arquivo de rastreamento, clique em Start new profiler session no painel Sessions e, em seguida, selecione Load from file.

Você pode inspecionar um rastreamento importado no CPU Profiler, da mesma forma que faz com rastreamentos capturados diretamente no CPU Profiler, com as seguintes exceções:

  • A atividade da CPU não é representada ao longo da linha do tempo da CPU.
  • A linha do tempo de atividades de encadeamentos indica apenas onde os dados de rastreamento estão disponíveis para cada encadeamento, e não os estados reais deles (como em execução, em espera ou em suspensão).

Inspecionar rastreamentos

O painel de rastreamento do CPU Profiler fornece várias guias que permitem escolher como exibir informações de rastreamentos gravados.

Para rastreamentos de métodos e de funções, você pode escolher entre as guias Call Chart, Flame Chart, Top Down e Bottom Up. Para rastreamentos do sistema, você pode escolher entre as guias Trace Events, Flame Chart, Top Down e Bottom Up.

Inspecionar rastreamentos usando a guia Call Chart

A guia Call Chart oferece uma representação gráfica do rastreamento de um método ou função, em que o período e o tempo de uma chamada são representados no eixo horizontal e os recebedores da chamada são mostrados ao longo do eixo vertical. As chamadas do método para APIs do sistema são mostradas em laranja, as chamadas aos próprios métodos do aplicativo são mostradas em verde e as chamadas do método para APIs de terceiros (incluindo APIs da linguagem Java) são mostradas em azul. A figura 4 mostra um exemplo de gráfico de chamadas e ilustra os conceitos de tempo próprio, tempo secundário e tempo total para determinado método. Saiba mais sobre esses conceitos na seção sobre como inspecionar rastreamentos usando gráficos Top Down e Bottom Up.

Figura 4. Exemplo de gráfico de chamadas que ilustra o tempo próprio, o tempo secundário e o tempo total para o método D.

Dica: para acessar o código-fonte de um método ou função, clique com o botão direito e selecione Jump to Source. Esse acesso funciona em qualquer guia do painel de rastreamentos.

Inspecionar rastreamentos usando a guia Flame Chart

A guia Flame Chart oferece um gráfico de chamadas invertido que agrega pilhas de chamadas idênticas. Ou seja, métodos idênticos que compartilham a mesma sequência de autores da chamada são coletados e representados como uma barra mais longa em um diagrama de chamas (em vez de serem exibidos como várias barras mais curtas, como mostrado em um gráfico de chamada). Dessa forma, é mais fácil ver quais métodos ou funções consomem a maior quantidade de tempo. No entanto, isso também significa que o eixo horizontal não representa uma linha do tempo. Em vez disso, indica a quantidade relativa de tempo que cada método ou função leva para ser executado.

Para ajudar a ilustrar esse conceito, considere o gráfico de chamadas na figura 5. Observe que o método D faz várias chamadas para B (B1, B2 e B3) e que algumas chamadas para B chamam C (C1 e C3).

Figura 5. Gráfico de chamadas com várias chamadas de método que compartilham uma sequência comum de autores da chamada.

Como B1, B2 eB 3 compartilham a mesma sequência de autores da chamada (A → D → B), eles são agregados, conforme mostrado na figura 6. De forma similar, C1 e C3 são agregados porque compartilham a mesma sequência de autores da chamada (A → D → B → C). Observe que C2 não é incluído porque tem uma sequência diferente de autores da chamada (A → D → C).

Figura 6. Agregação de métodos idênticos que compartilham a mesma pilha de chamadas.

As chamadas agregadas são usadas para criar o diagrama de chamas, como mostrado na figura 7. Observe que, para qualquer chamada em um diagrama de chamas, os recebedores de chamada que consomem a maior parte de tempo de CPU são exibidos primeiro.

Figura 7. Representação do diagrama de chamas do gráfico de chamadas mostrado na figura 5.

Inspecionar rastreamentos usando gráficos Top Down e Bottom Up

A guia Top Down exibe uma lista de chamadas de métodos em que a expansão de um nó do método exibe os recebedores de chamadas. A figura 8 mostra um gráfico de cima para baixo para o gráfico de chamadas da figura 4. Cada seta no gráfico aponta de um autor para um recebedor da chamada.

Como mostrado na figura 8, a expansão do método A na guia Top Down exibe os recebedores de chamada, os métodos B e D. Depois disso, a expansão do nó do método D expõe os receptores da chamada, os métodos B e C, e assim por diante. De forma similar à guia Flame Chart, a árvore de cima para baixo agrega informações de rastreamento para métodos idênticos que compartilham a mesma pilha de chamadas. Ou seja, a guia Flame Chart oferece uma representação gráfica da guia Top Down.

A guia Top Down fornece as informações a seguir para ajudar a descrever o tempo de CPU gasto em cada chamada de método (os tempos também são representados como porcentagem do tempo total do encadeamento em relação à duração do quadro de tempo selecionado):

  • Self: a quantidade de tempo que a chamada do método levou para executar o próprio código, e não o código dos recebedores da chamada, como ilustrado no método D da figura 4.
  • Children: a quantidade de tempo que a chamada do método levou para executar o código dos recebedores da chamada, e não o próprio código, como ilustrado no método D da figura 4.
  • Total: a soma dos tempos Self e Children dos métodos. É a representação da quantidade total de tempo gasto pelo aplicativo executando uma chamada, conforme ilustrado na figura 4 para o método D.

Figura 8. Uma árvore Top Down.

Figura 9. Uma árvore Bottom Up para o método C da figura 8.

A guia Bottom Up exibe uma lista de chamadas de métodos em que a expansão de um nó do método exibe os autores de chamada. Usando o rastreamento de exemplo mostrado na figura 8, a figura 9 mostra uma árvore de baixo para cima do método C. A abertura do nó do método C na árvore de baixo para cima exibe cada um dos autores de chamadas únicos, os métodos B e D. Observe que, embora B chame C duas vezes, B é exibido apenas uma vez na expansão do nó para o método C na árvore de baixo para cima. Depois disso, a expansão do nó B exibe os autores da chamada, os métodos A e D.

A guia Bottom Up é útil para classificar métodos de acordo com os que consomem mais (ou menos) tempo de CPU. Você pode inspecionar cada nó para determinar quais autores da chamada gastam mais tempo de CPU invocando esses métodos ou funções. Em comparação com a árvore de cima para baixo, as informações de tempo de cada método em uma árvore de baixo para cima fazem referência ao método na parte superior de cada árvore (nó superior). O tempo de CPU também é representado como porcentagem do tempo total do encadeamento durante a gravação. A tabela a seguir ajuda a explicar como interpretar as informações de tempo do nó principal e dos respectivos métodos de autores da chamada (subnós).

Self Children Total
Método ou função na parte superior da árvore de baixo para cima (nó principal) Representa o tempo total que o método ou função levou para executar o próprio código, e não o de seus recebedores da chamada. Em comparação com a árvore de cima para baixo, essas informações de tempo representam uma soma de todas as chamadas para esse método ou função durante a gravação. Representa o tempo total que o método ou a função gastou executando o código dos recebedores da chamada, e não o próprio código. Em comparação com a árvore de cima para baixo, essas informações de tempo representam a soma de todas as chamadas para os recebedores da chamada desse método ou função durante a gravação. A soma dos tempos próprios e secundários.
Autores de chamadas (subnós) Representa o total do tempo próprio do recebedor da chamada quando chamado pelo autor da chamada. Usando a árvore de baixo para cima na figura 9 como exemplo, o tempo próprio para o método B seria a soma de todos os tempos próprios para cada execução do método C quando chamado por B. Representa o total do tempo secundário do recebedor da chamada quando invocado pelo autor da chamada. Usando a árvore de baixo para cima na figura 9 como exemplo, o tempo próprio para o método B seria a soma de todos os tempos próprios para cada execução do método C quando chamado por B. A soma dos tempos próprios e secundários.

Observação: para determinada gravação, o Android Studio deixa de coletar novos dados quando o criador de perfil alcança o limite de tamanho de arquivo (no entanto, a gravação em si continua). Normalmente, isso acontece muito mais rapidamente na execução de rastreamentos instrumentados, porque esse tipo de rastreamento coleta mais dados em um período menor em comparação a um rastreamento amostrado. Se você ampliar o tempo da inspeção até conter um período da gravação após o limite ser alcançado, os dados de tempo no painel de rastreamento não serão alterados (porque não há novos dados disponíveis). Além disso, o painel de rastreamento exibirá NaN como informações de tempo quando você selecionar apenas a parte da gravação que não tem dados disponíveis.

Inspecionar rastreamentos do sistema usando a guia Trace Events

Ao inspecionar um rastreamento do sistema, você pode usar a guia Trace Events para visualizar os detalhes dos eventos que ocorrem em cada encadeamento.

Para ver os detalhes de um encadeamento, selecione-o no painel Threads. Isso destaca a atividade do encadeamento em cada núcleo da CPU no painel Kernel e mostra os eventos para o encadeamento na guia Trace Events. Passe o cursor sobre um evento na guia Trace Events para ver o nome do evento e o tempo que cada etapa levou.

Por exemplo, a figura 10 mostra o RenderThread selecionado no painel Threads, a atividade dele destacada na CPU 0 e CPU 1 no painel Kernel e o tempo gasto em um evento específico na guia Trace Events.

Figura 10. Visualização da atividade da CPU e eventos de rastreamento para o encadeamento de renderização.

Para mais informações sobre como inspecionar informações de rastreamento do sistema, consulte a seção Investigar problemas de desempenho da IU da documentação do systrace.

Inspecionar dados de renderização de quadro

Você pode inspecionar quanto tempo o aplicativo leva para renderizar cada quadro no encadeamento principal e no RenderThread para investigar os afunilamentos que causam instabilidade da IU e baixas taxas de quadros.

Para ver dados de renderização de quadros, grave um rastreamento usando uma configuração que permita rastrear chamadas do sistema. Depois de gravar o rastreamento, procure informações sobre cada quadro na seção chamada FRAMES, conforme mostrado na figura 11.

Figura 11. Todos os quadros que demoram mais de 16 ms são exibidos em vermelho.