Partilhar via


Instrumente seu aplicativo .NET no Visual Studio (C#, C++, Visual Basic, F#)

Com o lançamento do Visual Studio 2022 versão 17.5, você pode usar a nova ferramenta de instrumentação dinâmica. Esta ferramenta mostra o número exato de vezes que suas funções são chamadas e é mais rápida do que a versão anterior da ferramenta Instrumentação. Esta ferramenta suporta instrumentação .NET Core sem precisar de PDBs. A partir do Visual Studio 2022 versão 17.6 Preview 2, a ferramenta também suporta C/C++.

A ferramenta é semelhante à ferramenta de uso da CPU, exceto que é baseada no tempo do relógio de parede em vez da utilização da CPU. Isso significa que o tempo bloqueado, como o tempo gasto esperando por bloqueios, aparecerá no rastreamento de instrumentação, ao contrário da ferramenta Uso da CPU. Para obter informações adicionais sobre como aprender a usar a ferramenta Instrumentação de forma eficaz, consulte Visão geral da instrumentação e Estudo de caso: isolar um problema de desempenho.

Instrumente a sua aplicação

  1. No projeto do Visual Studio, defina a configuração da solução como Release e selecione o destino de implantação.

    O destino de implantação normalmente corresponde ao nome do projeto, indicando uma implantação local.

  2. Selecione Alt+F2 (ou Debug > Analisador de Desempenho) para abrir o Analisador de Desempenho no Visual Studio.

  3. Marque a caixa de seleção Instrumentação.

    Captura de tela mostrando a ferramenta Instrumentação selecionada.

    Se você habilitar a opção Iniciar com a coleta pausada antes de iniciar o criador de perfil, os dados não serão coletados até que você selecione o botão Gravar na exibição da sessão de diagnóstico.

    Observação

    Se a ferramenta não estiver disponível para seleção, desmarque a caixa de seleção de todas as outras ferramentas porque algumas ferramentas precisam ser executadas sozinhas. Para saber mais sobre como executar ferramentas juntas, consulte Usando várias ferramentas de perfilagem simultaneamente.

    Se a ferramenta ainda não estiver disponível, verifique se seu projeto atende aos requisitos anteriores. Certifique-se de que seu projeto esteja no modo Release para capturar os dados mais precisos.

    Para alguns tipos de projeto, como CMake, você deve definir o destino de inicialização como Executável. Para obter mais informações, consulte Quais ferramentas são suportadas para meu projeto?.

  4. Selecione o botão Iniciar para executar a ferramenta.

  5. Selecione os itens no seu programa para instrumentar.

    Captura de tela mostrando a caixa de diálogo Selecionar itens para instrumentação.

    A partir do Visual Studio 2022 versão 17.11, a ferramenta de perfil mantém os itens selecionados para a próxima execução de perfil.

    A partir do Visual Studio 2022 versão 17.13 Preview 1, pode selecionar elementos para instrumentar em C++.

  6. Selecione OK.

  7. Depois que a ferramenta começar a ser executada, percorra o cenário que pretende analisar na sua aplicação. Em seguida, selecione Parar a recolha ou feche a aplicação para ver os seus dados.

Analise o Relatório de Instrumentação

Seus dados de criação de perfil aparecem no Visual Studio.

Captura de tela mostrando dados da Instrumentação .NET.

A visualização de dados de Instrumentação mostra uma lista de funções ordenadas pela duração mais longa, com a função que demora mais tempo no topo sob Funções Principais. A seção Hot Path mostra a pilha de chamadas para as funções que estão a consumir mais tempo. Essas listas podem ajudar a guiá-lo para funções onde os gargalos de desempenho estão acontecendo.

Clique numa função em que está interessado e verá uma vista mais detalhada.

Os dados disponíveis são semelhantes à ferramenta Uso da CPU, exceto que se baseiam no tempo do relógio de parede e nas contagens de chamadas, em vez da utilização da CPU.

Analise perspetivas

Se na secção Principais Insights aparecerem informações, utilize o link fornecido para obter mais informações sobre o problema identificado. Para obter mais informações, consulte informações da CPU, mas esteja ciente de que as informações da ferramenta Instrumentação são específicas para o tempo de relógio de parede e não para a utilização da CPU.

Obtenha assistência de IA

Se você tiver o Copilot, poderá obter assistência de IA enquanto analisa os principais insights. O Copilot fornece informações e insights relacionados a um conjunto de insights de desempenho específicos. Com o Copilot, você também pode fazer perguntas sobre funções nos hot paths identificados em seu código, o que pode ajudá-lo a produzir um código mais eficiente ou econômico.

O botão Ask CopilotCaptura de ecrã do botão Ask Copilot. aparece mesmo que nenhum insight de desempenho específico seja identificado. Selecione Perguntar ao Copiloto para aprender com o Copilot e começar a fazer perguntas.

Analise relatórios detalhados de instrumentação

Para uma análise aprofundada do relatório de instrumentação, abra primeiro uma das exibições detalhadas do relatório:

  1. Clique em Abrir detalhes na página de resumo do relatório ou selecione uma das funções principais para abrir a visualização Funções .

    Captura de tela que mostra o link Abrir detalhes.

  2. Na lista Modo de Exibição Atual , você pode selecionar uma das exibições de relatório detalhadas.

    Captura de tela que mostra a lista de relatórios detalhados.

A tabela a seguir fornece uma descrição das exibições detalhadas.

Visualizar Descrição
Chamador/Recetor Vista detalhada do tempo gasto em uma função específica, a(s) função(ões) que a chamou e a(s) função(ões) que ela chama. Os dados de desempenho são agregados para o período de recolha de dados. Você pode selecionar funções de chamada e funções chamadas para percorrer o caminho da chamada.
Árvore de chamadas Vista hierárquica da trajectória de chamada de função. Usado para identificar caminhos de chamada que estão demorando mais tempo (caminho quente).
Módulos Vista do tempo gasto em módulos individuais, agregado ao longo do período de recolha de dados. Usado para identificar módulos que podem ser gargalos de desempenho devido a uma combinação de altas contagens de chamadas e/ou problemas de desempenho.
Funções Vista do tempo gasto em funções individuais, agregado ao longo do período de recolha de dados. Usado para identificar funções que podem ser gargalos de desempenho devido a uma combinação de altas contagens de chamadas e/ou problemas de desempenho.
Gráfico de chama Vista hierárquica do caminho de chamadas de funções numa visualização de gráfico de chama. Usado para identificar caminhos de chamada que estão demorando mais tempo (caminho quente).

Em todas as visualizações, exceto Chamador/chamada, o relatório de diagnóstico é classificado por Total [unidade, %], da maior para a menor. Altere a ordem de classificação ou a coluna de classificação selecionando os cabeçalhos das colunas. Você pode clicar duas vezes numa função na qual está interessado e verá o código fonte da função, bem como uma marcação que mostra onde o tempo é gasto nessa função. A tabela mostra colunas com dados como o tempo total gasto numa função, incluindo funções chamadas (Total), e uma segunda coluna que mostra o tempo gasto numa função, excluindo funções chamadas (Self).

Esses dados podem ajudá-lo a avaliar se a função em si é um gargalo de desempenho. Determine a quantidade de dados que o método está exibindo para ver se o código de terceiros ou as bibliotecas de tempo de execução são a razão para seus pontos de extremidade serem lentos ou consumirem muitos recursos.

Para obter mais informações sobre como usar o gráfico Flame, consulte Identificar caminhos quentes com o Flame Graph.

Árvore de chamada de instrumentação

Para exibir a árvore de chamadas, selecione o nó pai no relatório. Por padrão, a página Instrumentação é aberta na visualização Caller/Callee. Na lista suspensa Vista Atual, selecione Árvore de Chamadas. A visualização da árvore de chamadas pode ajudá-lo a identificar rapidamente gargalos de desempenho.

Você pode clicar nos botões Expandir Hot Path e Mostrar Hot Path para ver as chamadas de função que usam mais tempo de relógio de parede na visualização da árvore de chamadas.

Captura de tela que mostra a estrutura da árvore de chamadas.

Aqui estão mais informações sobre os valores da coluna:

  • Total indica quanto tempo foi gasto na função e quaisquer funções chamadas por ela. Os valores de Total de Alto apontam para as funções que estão consumindo mais tempo de clock.

  • Self indica quanto tempo foi gasto no corpo da função, excluindo o tempo gasto em quaisquer funções que foram chamadas por ele. Altos valores de auto podem indicar um gargalo de desempenho dentro da própria função.

  • Contagem de Chamadas indica o número de vezes que uma função é chamada.

  • Módulo O nome do módulo que contém a função.

Para obter ajuda para entender dados inesperados na árvore de chamadas, consulte Noções básicas sobre a árvore de chamadas.

Chamadas assíncronas na árvore de chamadas de instrumentação (.NET)

A partir do Visual Studio 2022 versão 17.13 Preview 2, as vistas que representam uma árvore de chamadas visual colocam as chamadas assíncronas do .NET sob as funções onde foram feitas, facilitando o rastreio do fluxo de execução num único rastreio unificado. Isso pode ajudá-lo a identificar rapidamente gargalos de desempenho.

Na página Resumo, o rastreamento de pilha unificado é exibido na vista Árvore de Chamadas e na seção Hot Path. Os nós assíncronos aparecem com o descritor [Async Call].

Captura de tela que mostra a estrutura da árvore de chamadas para chamadas assíncronas.

Você pode alternar a exibição de uma pilha de chamadas assíncronas integradas selecionando Pilhas de Chamadas Assíncronas Integradas na opção Filtro na visualização Resumo do perfilador. A configuração está habilitada por padrão.

Captura de tela que mostra a opção Stick Async Stacks.