Compartilhar via


Identificar caminhos críticos com um Flame Graph (C#, Visual Basic, C++ e F#)

As ferramentas de criação de perfil do Visual Studio para utilização e instrumentação da CPU incluem o modo de exibição Flame Graph . O Flame Graph ajuda a identificar caminhos ativos em seu código, mostrando uma visualização da árvore de chamadas. O caminho quente é a pilha de chamadas para as funções que estão usando mais CPU ou mais tempo e geralmente é um bom lugar para procurar 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 detalhá-los ainda mais.

Captura de tela mostrando o Flame Graph com o menu de contexto exibido.

Para obter um tutorial que demonstra como melhorar o desempenho ao usar o Flame Graph, consulte Estudo d caso: Guia para iniciantes sobre como otimizar o código. Para obter informações sobre o criador de perfil da CPU, consulte Analisar o desempenho usando a criação de perfil da CPU.

Investigar caminhos críticos

A exibição Flame Graph está na exibição de detalhes do relatório .diagession .

  1. Inicie uma sessão de criação de perfil com a ferramenta Uso da CPU ou Instrumentação.

  2. Depois de interromper a sessão de criação de perfil e o relatório ser carregado, selecione Abrir detalhes.

    Captura de tela mostrando Detalhes de abertura selecionados.

  3. Selecione Flame Graph na seleção suspensa Exibição Atual.

    Captura de tela que mostra a exibição Grafo de Chama selecionada.

    A exibição Flame Graph é exibida.

    Captura de tela que mostra a visão geral do Grafo de Chama exibida.

    O caminho quente é o caminho de código que usa mais CPU ou mais tempo à medida que você olha para baixo na árvore de chamadas.

    Por padrão, os dados mostrados no Flame Graph representam os mesmos dados mostrados na exibição de árvore de chamadas para o período de coleta de dados. Especificamente, para uso da CPU, ele mostra os valores totais da 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 gráfico mostra os valores equivalentes à coluna Total na exibição de á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 gráfico de chamas. Isso permite que você visualize melhor uma árvore de chamadas complexa e exiba nomes longos quando eles estão truncados ou ocultos. Aqui está um exemplo de um gráfico de chama que mostra uma árvore de chamadas mais complexa.

    Captura de tela mostrando o Flame Graph para uma árvore de chamadas complexa.

    Para exibir detalhes sobre qualquer nó, selecione o nó.

    Escolha Redefinir zoom para retornar à exibição padrão.

    Você também pode navegar para 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.

    Captura de tela mostrando a opção Flame Graph para visualizar na árvore de chamadas.

Vire o gráfico de chamas

Por padrão, o gráfico de chamas na ferramenta é mostrado de cabeça para baixo ou como um gráfico de gelo, onde o eixo y está contando a profundidade da pilha para baixo a partir de zero na parte superior.

Você pode exibir um layout de gráfico de chamas padrão clicando em Inverter gráfico de chamas.

Captura de tela que mostra Inverter Grafo de Chama selecionado.

Em um Flame Graph complexo, é possível aplicar zoom na visualização ao fazer a seleção de elementos específicos.

Na exibição Grafo de Chama, você pode navegar clicando em um nó com um mouse ou usando o teclado. Além disso, há suporte para os atalhos de teclado apresentados a seguir.

Atalho de teclado Comando
Tab Ir para qualquer nó
Seta para cima/baixo Ir para o pai ou filho de um nó
Seta para a esquerda ou para a direira Acessar o par de um nó na pilha
Enter Aplicar mais zoom (selecionar)
Escape Reduzir