Identificar caminhos quentes com um grafo de chama (C#, Visual Basic, C++, F#)
As ferramentas de criação de perfil do Visual Studio para instrumentação e utilização da CPU incluem a exibição do Flame Graph. O Flame Graph ajuda a identificar caminhos críticos no código mostrando uma visualização da árvore de chamadas. O caminho crítico é a pilha de chamadas das funções que estão utilizando mais CPU ou consumindo mais tempo, e é muitas vezes um bom ponto de partida para buscar possíveis otimizações de desempenho. O grafo fornece uma visão geral visual de onde o tempo está sendo gasto em seu aplicativo e você pode clicar em nós específicos para aprofundá-los ainda mais.
Para obter um tutorial que mostra como melhorar o desempenho usando o Flame Graph, consulte Estudo de Caso: Guia do Iniciante para Otimizar o Código. Para obter informações sobre a ferramenta de perfil de CPU, consulte Analisar o desempenho usando a ferramenta de perfil de CPU.
Investigar caminhos críticos
A exibição do Flame Graph está na exibição de detalhes do relatório .diagession.
Iniciar uma sessão de criação de perfil com a ferramenta de Instrumentação ou Uso da CPU.
Depois de parar a sessão de criação de perfil e carregar o relatório, selecione Abrir detalhes.
Selecione Flame Graph na seleção suspensa Exibição Atual.
A exibição do Flame Graph aparecerá.
O caminho crítico é o caminho do código que usa mais CPU ou consome mais tempo, à medida que você olha para baixo através da árvore de chamadas.
Por padrão, os dados mostrados no Gráfico de Chama representam os mesmos dados exibidos na visão da árvore de chamadas para o período de coleta de dados. Especificamente, para o Uso da CPU, ele mostra os valores de Total de CPU. Esse valor é inclusivo, portanto, inclui a utilização da CPU (ou seja, o tempo de computação da CPU) usada por chamadas para a função e quaisquer outras funções chamadas pela função. Da mesma forma, para Instrumentação, o grafo mostra os valores equivalentes à coluna Total na exibição da árvore de chamadas.
No entanto, se você selecionar um nó, o nó selecionado se tornará a nova linha de base e usará 100% da largura do flame graph. Isso permite visualizar melhor uma árvore de chamadas complexa e exibir nomes longos quando eles estiverem truncados ou ocultos. Este é um exemplo de um flame graph que mostra uma árvore de chamadas mais complexa.
Para exibir detalhes sobre qualquer nó, selecione o nó.
Escolha Reset Zoom para retornar ao modo de exibição padrão.
Você também pode navegar por diferentes exibições no relatório de criação de perfil, selecionando um nó e, em seguida, escolhendo uma opção como Exibir na árvore de chamadas no menu de contexto.
Inverter o Gráfico de Chamas
Por padrão, o flame graph na ferramenta é mostrado de cabeça para baixo ou como um gráfico de estalactite, em que o eixo y está contando a profundidade da pilha para baixo a contar do zero na parte superior.
Você pode exibir um layout padrão do gráfico de chama clicando em Inverter Flame Graph.
Navegar no flame graph
Para um grafo de chama complexo, você pode ampliar a visualização selecionando elementos específicos.
Na exibição Flame Graph, você pode navegar clicando em um nó com um mouse ou usando o teclado. Além disso, há suporte para os seguintes atalhos de teclado.
Atalho de teclado | Comando |
---|---|
Guia | Ir para qualquer nó |
Seta para cima/baixo | Ir para o pai ou filho de um nó |
Seta direita/esquerda | Vá para o par de um nó na pilha |
Entrar | Ampliar (selecionar) |
Escape | Reduzir |