Partilhar via


Identificar caminhos quentes com um gráfico de chama (C#, Visual Basic, C++, F#)

As ferramentas de perfilagem do Visual Studio para instrumentação e utilização da CPU incluem a exibição de Flame Graph. O Flame Graph ajuda você a identificar caminhos quentes em seu código, mostrando uma visualização da árvore de chamadas. O caminho crítico é a pilha de chamadas para as funções que estão a utilizar mais CPU ou mais tempo, e geralmente é um bom lugar para identificar possíveis otimizações de desempenho. O gráfico 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.

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

Para obter um tutorial que mostra como melhorar o desempenho usando o gráfico de chamas, consulte Estudo de caso: Guia para iniciantes para otimizar o código. Para obter informações sobre a ferramenta de análise de CPU, consulte Analisar o desempenho usando a análise de CPU.

Investigue caminhos críticos

A visualização Gráfico de Chama está na visualização de detalhes do relatório .diagession de.

  1. Inicie uma sessão de perfilagem 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 Abrir detalhes selecionados.

  3. Selecione Gráfico de Chama no menu pendente Modo de Exibição Atual.

    Captura de tela mostrando o modo de exibição Gráfico de Chama selecionado.

    A visualização Gráfico de Chama é exibida.

    Captura de tela mostrando a visão geral do Flame Graph exibida.

    O caminho quente é o caminho de código que usa mais CPU ou mais tempo enquanto você olha para baixo através da árvore de chamadas.

    Por padrão, os dados mostrados no Flame Graph representam a mesma informação que aparece na visualização da árvore de chamadas para o período de recolha dos 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 gráfico mostra os valores equivalentes à coluna Total na visualizaçã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 gráfico de chama. Isso permite que você visualize melhor uma árvore de chamadas complexa e visualize 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 ver detalhes sobre qualquer nó, selecione-o.

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

    Você também pode navegar para diferentes visões no relatório de perfilagem selecionando um nó e, em seguida, escolher 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.

Inverter o gráfico de chama

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

Você pode visualizar um layout de gráfico de chama padrão clicando em Flip Flame Graph.

Captura de tela mostrando o Flip Flame Graph selecionado.

Para um gráfico de chama complexo, você pode ampliar a visualização selecionando elementos específicos.

Na visualização Gráfico de Chama, pode-se navegar clicando num nó com o rato ou utilizando o teclado. Além disso, os seguintes atalhos de teclado são suportados.

Atalho de teclado Comando
Tabulador Ir para qualquer nó
Seta para cima/para baixo Ir para o pai ou filho de um nó
Seta para a direita/esquerda Ir para o nó equivalente na pilha
Entrar Ampliar (selecionar)
Fuja Reduzir o zoom