Concentre-se no gráfico de chama
Quando o filtro Foco é usado, uma única função é selecionada, e o gráfico de chama 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:
- Analisar o consumo de recursos agregado de uma determinada função que é chamada a partir de vários locais.
- 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 em torno da função Sort
usando o gráfico de chama padrão?
Na próxima seção, focaremos o gráfico em Sort
e responderemos a essa pergunta.
Os gráficos de chama desta página foram construídos com Modo de cor e Comparar com definidos para 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 de chama para a função especificada e os une.
No gráfico anterior, o frame correspondente à função Sort
é de largura total e está 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
consumiu, em seu conjunto, 8,85% do tempo de CPU.
A metade inferior do gráfico anterior trata a função Sort
como o ponto de partida de um gráfico de chama padrão e mostra todos os recebedores das chamadas.
É possível criar essa parte com o gráfico de chama padrão usando o filtro Mostrar do frame:
A metade superior do gráfico mostra os autores das chamadas de Sort
com os recebedores ocultados. É 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 Ocultar pilhas ou Ocultar frames. Nessa situação, você adicionaria Ocultar pilhas para quickSort
para eliminar essa função e seus filhos e, em seguida, adicionaria Ocultar frames para Len
e maxDepth
:
Com esses filtros, a estimativa 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 agregadas. Portanto, o gráfico não ilustra o consumo geral de métricas de Sort
.
O gráfico focado é um pouco diferente de um gráfico que combina as duas aproximações:
- Há um único frame 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 frame
root
para que você possa ver 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 ver a pilha de chamadas de (*byLiteral).sort
com mais detalhes, selecione esse frame.
É possível clicar em outro quadro para refinar ainda mais as pilhas de chamadas exibidas:
Para restaurar um gráfico de chama focado ao estado original dele, clique no quadro que exibe o valor do filtro Foco. Nesse caso, selecione o frame cinza com o rótulo Sort
. Para restaurar um gráfico de chama 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 de chama, que é expandido em torno da função (*huffmanBitWriter).write
, exibe três pilhas de chamadas diferentes:
Usando a lista de foco
Para que o gráfico em degradê tenha como foco uma função específica, faça o seguinte:
- Clique em Lista list para abrir a tabela Selecionar função de foco.
- Selecione um nome de função na tabela ou, para uma função específica, clique em Ações more_vert e selecione Foco:
Se for possível chamar a função selecionada por meio de pilhas diferentes, cada pilha de chamadas será mostrada no gráfico.
Você pode classificar as linhas da tabela em ordem crescente arrow_upward ou decrescente arrow_downward selecionando um elemento do cabeçalho da tabela.
Cada linha na tabela exibe um nome de função e estatísticas relacionadas à execução dela.
Esta tabela mostra que a função (*compressor).deflate
requer 2,78 s para
ser executada, com 1,8 s gastos na própria função e o restante do
tempo gasto na pilha de chamadas.
Uma coluna de porcentagem informa que 57% do tempo total de execução é gasto
na função (*compressor).deflate
. Outra coluna informa que, em 89% do
tempo, (*compressor).deflate
ou uma função na pilha de chamadas está em execução.
Por fim, a coluna de contagem informa
que há três sequências que invocam a função (*compressor).deflate
.
Quando você estiver comparando perfis, observe que o conteúdo da lista de foco é diferente. Saiba mais em Como focar uma comparação.
Usando a barra de filtro
Clique no texto cinza Adicionar filtro de dados do perfil na barra de filtros e insira Focus:
e uma string que identifique a função a ser focada. É 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 close no filtro.