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 do aplicativo. Neste artigo, fornecemos informações para ajudar você 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 criação de perfil, consulte Estudo de caso: Guia para iniciantes sobre como otimizar o 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 para problemas gerais de desempenho. • Investigar o alto uso da CPU do servidor. • Investigar cenários 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. |
Grafo de chama | Exibir dentro da ferramenta Uso da CPU que fornece uma visualização alternativa da árvore de chamadas. | Investigar a latência em chamadas à API |
Afunilamento | Exibir dentro da ferramenta Uso da CPU que mostra onde a maior parte do tempo de CPU foi gasto em seu aplicativo. | Investigar a latência em chamadas à API |
Uso de Memória | Mostra a memória do aplicativo para encontrar problemas como perdas de memória. | • Otimizar o uso de memória • Investigar 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 coleta de lixo |
Instrumentação | Mostra as contagens exatas de chamadas e os horários de chamada. | • Você precisa de uma ferramenta como Uso da CPU, mas deseja obter contagens exatas de chamadas e do tempo gasto em funções com base no tempo do relógio de parede. • Você deseja ver o tempo bloqueado, como o tempo gasto esperando por bloqueios. • Obs.: essa ferramenta requer sobrecarga adicional. |
E/S do arquivo | Mostra suas operações de E/S de Arquivo e quanto tempo elas levam e quantos dados 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 de etapa anterior (ou ponto de interrupção) para a etapa atual ou o ponto de interrupção. |
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 |
.NET Async | Mostra o uso assíncrono/de espera em aplicativos .NET. | Investigar a suspeita de problema de desempenho com código assíncrono. |
Contadores do .NET | Relatório dinâmico para contadores .NET. | • Inicie uma investigação de 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. |
Backup de 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 Entity Framework Core. |
Uso de GPU | Mostra o uso de hardware de alto nível do aplicativo Direct3D. | Verifique se o desempenho do aplicativo está associado à CPU ou à GPU. |
Linha do tempo 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 depurador que permite registrar eventos e examinar o estado do aplicativo em vários pontos de execução. | Você deseja que uma ferramenta examine o estado do aplicativo em vários pontos, não apenas o estado atual do aplicativo. |
Quais ferramentas têm compatibilidade com meu projeto?
A tabela a seguir que lista as diferentes ferramentas que o Visual Studio oferece e os diferentes tipos de projeto com os quais você poderá 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 |
E/S do arquivo | sim | sim | sim | sim |
PerfTips | sim | sim | sim | sim |
Visualizador de Eventos | sim | sim | sim | sim |
.NET Async | sim | não | sim | sim |
Contadores do .NET | sim (somente no .NET Core/5+) | não | não | sim (somente no ASP.NET Core) |
Backup de banco de dados | sim (somente no .NET Core/5+) | não | não | sim (somente no ASP.NET Core) |
Uso de GPU | sim | sim | sim | não |
Linha do tempo do aplicativo | sim (XAML) | não | sim | não |
Performance Explorer | não | não | não | não |
IntelliTrace | .NET com Visual Studio Enterprise somente | não | .NET com Visual Studio Enterprise somente | .NET com Visual Studio Enterprise somente |
Quais são as ferramentas compatíveis no Linux?
As seguintes ferramentas têm suporte com o Linux como a plataforma de destino, bem como o Windows:
- Uso da CPU
- Rastreamento de alocação de objeto .NET
- .NET Async
- Contadores do .NET
- Visualizador de Eventos
- Banco de dados
Aprenda a usar os criadores de perfil
Os artigos e as postagens no blog apresentados a seguir fornecem mais informações para ajudar você a aprender a usar as ferramentas de desempenho do Visual Studio de maneira efetiva.
- Estudo de caso: Guia para iniciantes sobre como otimizar código
- Isolar um problema de desempenho
- Improving Visual Studio performance with the new Instrumentation Tool
- Case Study: Double performance in under 30 minutes