Como incluir foco no gráfico

Quando o filtro de Foco é usado, uma única função é selecionada e o gráfico em degradê exibe todos os caminhos de código que entram e saem dessa função específica. Um gráfico focado permite realizar duas tarefas comuns:

  1. Analisar o consumo de recursos agregado de uma determinada função que é chamada a partir de vários locais.
  2. Analisar a proporção de tempo gasto em uma função de diferentes autores de chamada.

Por exemplo, como você analisa o consumo de recursos na função Sort usando o gráfico padrão em degradê?

Função sort no gráfico em degradê.

Na próxima seção, enfocamos o gráfico em Sort e respondemos a essa pergunta. Os gráficos em degradê nesta página foram construídos com Modo de cor e Comparar com definidos usando os valores padrão de Nome e Nenhum, respectivamente.

Explicação do gráfico focado

O gráfico gerado pelo filtro Foco cria dois gráficos em degradê para a função especificada e os une.

Gráfico em degradê para focar na função de classificação.

No gráfico anterior, o quadro correspondente à função Sort é de largura total e destacado. O texto do quadro inclui o nome da função, uma porcentagem e o número de perfis usados na análise. Nesse caso, as métricas indicam que a função Sort, em conjunto, consumiu 8,85% do tempo da CPU.

A metade inferior do gráfico anterior trata a função Sort como o ponto inicial de um gráfico em degradê padrão e mostra todas as rotinas chamadas. É possível criar essa peça com o gráfico em degradê padrão usando o filtro Mostrar do quadro:

Parte inferior dos gráficos em degradê mostrando a classificação do que foi chamado.

A metade superior do gráfico mostra os chamadores de Sort com as rotinas chamadas ocultas. É possível fazer uma aproximação da metade superior usando uma série de filtros. Comece adicionando um filtro Mostrar pilhas para Sort. Em seguida, para cada função chamada por Sort, adicione um Ocultar pilhas ou Ocultar quadros. Nesta situação, um Ocultar pilhas seria adicionado a quickSort para eliminar essa função e os filhos dela, e Ocultar quadros seria adicionado a Len e maxDepth:

Parte superior dos gráficos em degradê mostrando os chamadores de classificação.

Usando esses filtros, a aproximação da metade superior do gráfico focado mostra que a função Sort é alcançada por meio de diferentes pilhas de chamadas. No entanto, as métricas não são combinadas, portanto, o gráfico não ilustra o consumo geral de métricas por Sort.

O gráfico focado é um pouco diferente de um gráfico que combina as duas aproximações:

  • Há um único quadro para a função de foco Sort.
  • O quadro da função de foco é realçado, é um quadro de largura total e exibe métricas que são a combinação de todas as pilhas de chamadas.
  • Há várias pilhas de chamadas, cada uma começando com um quadro root, para que seja possível visualizar toda a pilha de chamadas.

Como selecionar um quadro

Se você selecionar um quadro em um gráfico focado, o gráfico em degradê será redesenhado com a pilha de chamadas desse quadro exibida com mais detalhes. Se o quadro for alcançado por meio de várias pilhas de chamadas, cada uma dessas pilhas será exibida. As pilhas de chamadas que não incluírem o quadro serão ocultadas. Para restaurar o gráfico ao estado original dele, clique no quadro que corresponde à função de foco.

No exemplo anterior, Sort é chamado por (*byFreq).sort e por (*byLiteral).sort. Para visualizar a pilha de chamadas de (*byLiteral).sort mais detalhadamente, clique nesse quadro. É possível clicar em outro quadro para refinar ainda mais as pilhas de chamadas exibidas:

Gráfico em degradê expandido sobre a classificação.

Para restaurar um gráfico em degradê focado ao estado original dele, clique no quadro que exibe o valor do filtro Foco. Nesse caso, clique no quadro cinza com o rótulo Sort. Para restaurar um gráfico em degradê padrão ao estado original dele, selecione o quadro raiz.

Como analisar o gráfico

Para analisar um gráfico em degradê focalizado, use os mesmos controles e filtros usados para analisar um gráfico em degradê padrão. No entanto, há diferenças na maneira como os gráficos interagem com o ponteiro:

  • Se o ponteiro do mouse estiver sobre um quadro, a dica da ferramenta exibirá dados métricos. Para um gráfico em degradê padrão, são mostrados os dados de métricas totais do quadro são mostrados. Para um gráfico em degradê focalizado, são mostrados dados métricos agregados para a função.

  • Se você selecionar um quadro, o gráfico em degradê será redesenhado com esse quadro exibido em largura total. Para restaurar um gráfico em degradê padrão ao formato original dele, selecione o quadro superior. Para restaurar um gráfico em degradê focalizado ao formato original dele, selecione o quadro que exibe o valor do filtro de foco.

Para informações sobre o gráfico focado ao comparar perfis, consulte Como focar uma comparação.

Como configurar o filtro de foco

Existem métodos diferentes que podem ser usados para definir um filtro de foco, mas todos resultam no mesmo gráfico.

Usando o gráfico

Coloque o ponteiro no quadro relevante e clique em Foco na dica dele. A função de foco é extraída do quadro. Neste exemplo, o gráfico em degradê, ampliado em torno da função (*huffmanBitWriter).write, exibe três pilhas de chamadas diferentes:

Gráfico em degradê focado em um pequeno quadro.

Usando a lista de foco

Para que o gráfico em degradê tenha como foco uma função específica, clique em Listar e selecione uma linha na tabela Selecionar função de foco:

Selecione a tabela de funções de foco.

Se for possível chamar a função selecionada por meio de pilhas diferentes, cada pilha de chamadas será mostrada no gráfico.

É possível classificar as linhas da tabela em ordem crescente ou descendente . Basta selecionar um elemento de cabeçalho da tabela. Cada linha na tabela exibe um nome de função e estatísticas relacionadas à execução dela. A tabela acima mostra que a função (*compressor).deflate requer 1,46 s para ser executada, com 971 ms gastos nela mesma e o restante do tempo gasto na pilha de chamadas. Uma coluna de porcentagem informa que 62% do tempo total de execução é gasto na função (*compressor).deflate. Outra coluna relata que em 93% do tempo, (*compressor).deflate ou uma função na pilha de chamadas dela está em execução. Por último, a coluna de contagem mostra que há duas sequências que invocam a função (*compressor).deflate.

Quando você estiver comparando perfis, observe que o conteúdo da lista de foco é diferente. Para mais informações, acesse Focar uma comparação.

Usando a barra de filtro

Clique no texto cinza Adicionar filtro de dados do perfil na barra de filtros e, em seguida, insira Focus: e uma string que identifique a função que terá o foco. É possível usar uma substring, incluindo prefixos de pacote ou o nome completo. Quando você fornece uma string ambígua, a função que melhor corresponde à ela é selecionada.

Se preferir, clique em Filtros, selecione Foco e insira a string de identificação.

Se for possível chamar a função selecionada por meio de pilhas diferentes, cada pilha de chamadas será mostrada no gráfico.

Como remover o filtro de foco

Para remover o filtro de foco, clique em Fechar no ícone de filtro.

A seguir

Para saber como comparar dois perfis, consulte este artigo.