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.

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

  • Rastreamento 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 exibir o uso de CPU e as atividades das linhas 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 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 de evento em dispositivos que executam o Android 7.1 (API de nível 25) e versões anteriores, consulte Ativar criação avançada de perfil.
  2. Linha do tempo da CPU: mostra em tempo real o uso da CPU pelo app como porcentagem do tempo total de CPU disponível e o número total de linhas de execução usadas pelo app. Além disso, a linha do tempo também mostra o uso da CPU por outros processos, como os de sistema ou de outros apps, para que você possa compará-los ao 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 atividade de linhas 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 listadas abaixo. Após gravar um trace, você poderá selecionar uma linha de execução dessa linha do tempo para inspecionar os dados dele no painel de trace.
    • Verde: a linha de execução está ativa ou pronta para usar a CPU. Ou seja, está no estado "executando" ou "executável".
    • Amarelo: a linha de execução está ativa, mas aguarda uma operação de E/S, como E/S 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 exibidos na linha do tempo de atividade da linha de execução possam variar. O Android Studio registra esses dados para que você possa identificar quando a atividade e o uso de CPU pelas linhas de execução são realmente causados pelo código do app.