Inspecionar atividades de CPU com o CPU Profiler

A otimização do uso de CPU do app 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 das linhas de execução em tempo real durante a interação com o app, ou inspecionar os detalhes nos traces de método, de função e de sistema gravados.

As informações detalhadas que o CPU Profiler registra e mostra são determinadas pela configuração de gravação escolhida:

  • Trace do sistema: captura dados detalhados que permitem inspecionar como o app interage com os recursos do sistema.
  • Traces de método e função: para cada linha de execução no processo do app, é 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 traces 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 app para evitar trabalho desnecessário.

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

Para ver mais detalhes sobre como usar e escolher cada uma dessas opções de trace, 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.

    Se a caixa de diálogo Select Deployment Target solicitar, selecione o dispositivo em que seu app será implantado para a criação do perfil. Se você estiver conectado a um dispositivo por USB, mas o dispositivo não for exibido na lista, verifique se a depuração 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 mostrar o uso de CPU e as atividades de linha de execução do app. Você 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 no app à medida que elas 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 ver informações sobre como ativar a linha do tempo de eventos em dispositivos com o Android 7.1 (API de nível 25) 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 app, em forma de porcentagem do tempo total de CPU disponível, e o número total de linhas de execução usadas pelo app. A linha do tempo também mostra o uso da CPU por outros processos, como os do sistema ou de outros apps, para que você possa comparar com o uso do seu app. É 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 atividades de linha de execução: lista cada linha de execução que pertence ao processo do app e indica as atividades dele ao longo de uma linha do tempo com as cores abaixo. Depois de gravar um trace, você poderá selecionar uma linha de execução por essa linha do tempo para inspecionar os dados no painel de traces.
    • Verde: a linha de execução está ativa ou pronta para usar a CPU. Ou seja, ela está no estado "executando" ou "executável".
    • Amarelo: a linha de execução está ativa, mas aguarda uma operação de E/S, como de disco ou rede, para poder concluir o trabalho.
    • Cinza: a linha de execução está suspensa e não está consumindo nenhum tempo de CPU. Às vezes, isso ocorre quando a linha de execução precisa acessar um recurso ainda não disponível. A linha de execução entra em suspensão voluntária ou é suspensa pelo kernel até que o recurso necessário fique disponível.

    O CPU Profiler também informa o uso de CPU das linhas de execução adicionadas pelo Android Studio e pela plataforma Android ao processo do app, como JDWP, Profile Saver, Studio:VMStats, Studio:Perfa e Studio:Heartbeat, embora os nomes exatos mostrados na linha do tempo de atividades de linha de execução possam variar. O Android Studio informa esses dados para que você possa identificar quando as atividades de linha de execução e o uso de CPU são realmente causados pelo código do app.