Gráficos de cima para baixo e de baixo para cima

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

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

Como mostrado na Figura 2, a expansão do nó 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 recebedores da chamada, como os métodos B e C. De forma similar à guia Gráfico de chamas, 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 descrever o tempo de CPU gasto em cada chamada de método. Os tempos também são representados como porcentagem do tempo total da linha de execução em relação ao intervalo selecionado:

  • Self: a quantidade de tempo que a chamada do método ou da função 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 1.
  • Children: a quantidade de tempo que a chamada do método ou da função 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 1.
  • Total:a soma dos tempos Self e Children dos métodos. É a representação da quantidade total de tempo gasto pelo app ao executar uma chamada, conforme ilustrado na Figura 1 para o método D.

Figura 2. Uma árvore Top Down.

Figura 3. Uma árvore Bottom Up para o método C da Figura 5.

A guia Bottom Up mostra uma lista de chamadas em que a expansão de um nó do método ou da função exibe os autores da chamada. Usando o rastro de exemplo mostrado na Figura 2, a Figura 3 mostra uma árvore Bottom Up do método C. A abertura do nó para o método C na árvore Bottom Up mostra cada um dos autores da chamada exclusivos, 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 Bottom Up. 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 ou função 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 da linha de execução durante a gravação. A tabela a seguir ajuda a explicar como interpretar as informações de tempo do nó superior 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. Usando a árvore Bottom Up da Figura 6 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. Usando a árvore Bottom Up da Figura 6 como exemplo, o tempo secundário para o método B seria a soma de todos os tempos secundários para cada execução do método C quando chamado por B. A soma dos tempos próprios e secundários.

Observação: para uma 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 continua. Normalmente, isso acontece muito mais rapidamente na execução de rastros instrumentados, já que esse tipo de rastro coleta mais dados em um período menor em comparação a um rastro por amostra. 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 rastros não vão mudar, porque não haverá novos dados disponíveis. Além disso, o painel de rastros exibirá NaN como informações de tempo quando você selecionar apenas a parte da gravação que não tem dados disponíveis.