Compartilhar via


Qual ferramenta de desempenho devo usar? (C#, Visual Basic, C++, F#)

O Visual Studio fornece uma variedade de ferramentas de criação de perfil para ajudá-lo a diagnosticar diferentes tipos de problemas de desempenho do aplicativo, dependendo do tipo de aplicativo. Neste artigo, fornecemos informações para ajudá-lo a encontrar a ferramenta certa para seu cenário e tipo de aplicativo.

Para obter uma abordagem geral para otimizar o código usando as ferramentas de análise de desempenho, consulte Estudo de caso: Guia do Iniciante para a Otimização de Código.

Qual ferramenta devo usar?

A tabela a seguir lista as diferentes ferramentas que o Visual Studio oferece e fornece cenários comuns para escolher a ferramenta.

Ferramenta de Desempenho Descrição Quando usar a ferramenta?
Uso da CPU Mostra onde a CPU está gastando tempo. • Inicie uma investigação sobre problemas gerais de desempenho.
• Investigar o alto uso da CPU do servidor.
• Investigar cenários de DevOps, como quando os pedidos não estão chegando ao site de varejo.
• Otimizar o uso da CPU.
• Investigar a latência em chamadas à API.
Flame Graph Exibir dentro da ferramenta Uso da CPU que fornece uma visualização alternativa da árvore de chamadas. Investigar a latência em chamadas à API
Caminho crítico Visualização na ferramenta de uso da CPU que mostra onde a maior parte do tempo de CPU foi consumido em seu aplicativo. Investigar a latência em chamadas à API
Uso de Memória Mostra a memória do aplicativo para encontrar problemas como vazamentos de memória. • Otimizar o uso de memória
• Investigar o congelamento da interface do usuário
• Investigar suspeita de vazamento de memória (código nativo)
Alocação de objeto .NET Mostra onde os objetos .NET são alocados e informações sobre a coleta de lixo. • Otimizar o uso de memória do .NET
• Analisar a coleta de lixo
Instrumentação Mostra as contagens exatas de chamadas e os horários de chamada. • Você precisa de uma ferramenta como o uso da CPU, mas deseja contar chamadas exatas e o tempo gasto em funções com base no tempo do relógio de parede.
• Você deseja ver o tempo bloqueado, como o tempo gasto aguardando bloqueios.
• Observação: essa ferramenta requer sobrecarga extra.
Contadores do .NET Relatório dinâmico de métricas do .NET. • Inicie uma investigação sobre problemas gerais de desempenho.
• Você deseja um rastreamento para métricas baseadas em contador do .NET, como exceções por segundo, coleta de lixo e utilização da CPU.
BenchmarkDotNet Relatório para parâmetros de comparação com base no BenchmarkDotNet. • Obtenha visualizações diferentes dos dados coletados do BenchmarkDotNet, como uso da CPU ou alocações de memória, com base no diagnosticador em uso.
Entrada/Saída de Arquivo Mostra suas operações de E/S de Arquivo e quanto tempo elas levam e quantos dados eles processam. Investigar o congelamento da interface do usuário
PerfTips Mostra uma medição rápida das informações de desempenho ao interagir com seu código. Durante a depuração, você deseja ver o tempo decorrido entre a operação da etapa anterior (ou ponto de interrupção) e a etapa ou o ponto de interrupção atual.
visualizador de eventos Mostra solicitações HTTP, mensagens de log e exceções. • Investigar a latência em chamadas à API
• Investigar o aplicativo lento em execução em um servidor Web remoto
Assíncrono do .NET Mostra o uso de async/await em aplicativos .NET. Investigue o suposto problema de desempenho com código assíncrono.
Banco de dados Mostra o desempenho das consultas de banco de dados. Investigue o desempenho de consultas de banco de dados que usam ADO.NET ou o Entity Framework Core.
Utilização de GPU Mostra o uso de hardware de alto nível do seu aplicativo Direct3D. Verifique se o desempenho do aplicativo está associado à CPU ou à GPU.
Cronograma do Aplicativo Mostra o desempenho da interface do usuário para aplicativos XAML. Investigue o desempenho da interface do usuário em aplicativos XAML, como o tempo gasto para renderizar quadros.
IntelliTrace Ferramenta de depuração que permite registrar eventos e examinar o estado da aplicação em vários pontos de execução. Você deseja que uma ferramenta examine o estado do aplicativo em vários pontos, não apenas no estado atual do aplicativo.

Quais ferramentas têm suporte para meu projeto?

A tabela a seguir lista as diferentes ferramentas que o Visual Studio oferece e os diferentes tipos de projeto com os quais você pode usá-las:

Ferramenta de Desempenho .NET C/C++ UWP ASP.NET/ASP.NET Core
Uso da CPU sim sim sim sim
Uso de Memória sim sim sim sim
Alocação de objeto .NET sim Não sim sim
Instrumentação sim sim sim sim
Contadores do .NET sim (somente .NET Core/5+ ) Não Não sim (somente ASP.NET Core)
BenchmarkDotNet sim Não Não parcial
Entrada/Saída de Arquivo sim sim sim sim
PerfTips sim sim sim sim
visualizador de eventos sim sim sim sim
Assíncrono do .NET sim Não sim sim
Banco de dados sim (somente .NET Core/5+ ) Não Não sim (somente ASP.NET Core)
Utilização de GPU sim sim sim Não
Cronograma do Aplicativo sim (XAML) Não sim Não
Gerenciador de Desempenho Não Não Não Não
IntelliTrace .NET somente com o Visual Studio Enterprise Não .NET somente com o Visual Studio Enterprise .NET somente com o Visual Studio Enterprise

O suporte para projetos do CMake é igual ao C++. Para uso de CPU, uso de memória, E/S de arquivo e visualizador de eventos, você pode executar ferramentas de criação de perfil no projeto de inicialização. No entanto, para instrumentação e uso de GPU, você deve definir o executável como o destino no Criador de Perfil de Desempenho (Alt + F2) selecionando Executável como o Projeto de Inicialização.

O suporte para projetos do CMake é igual ao C++. No entanto, você deve definir o executável como o destino no Perfilador de Desempenho (Alt + F2) selecionando Executável como o Projeto de Inicialização.

Quais ferramentas têm suporte no Linux?

As ferramentas a seguir têm suporte com Linux ou WSL como a plataforma de destino, bem como o Windows:

  • Uso da CPU
  • Rastreamento de alocação de objeto .NET
  • .NET Async
  • Contadores do .NET
  • BenchmarkDotNet
  • Visualizador de Eventos
  • Base de dados

Saiba como usar os criadores de perfil

Os artigos e postagens de blog a seguir fornecem mais informações para ajudá-lo a aprender a usar as ferramentas de desempenho do Visual Studio com eficiência.