Primeira olhada nas ferramentas de criação de perfil (C#, Visual Basic, C++, F#)
As ferramentas de medição de desempenho do aplicativo são essenciais para desenvolvedores que desejam otimizar seu código e melhorar o desempenho do aplicativo. O Visual Studio oferece uma variedade de ferramentas de criação de perfil e diagnóstico que podem ajudá-lo a diagnosticar o uso de memória e CPU e outros problemas no nível do aplicativo. Com essas ferramentas, você pode acumular dados de desempenho enquanto executa seu aplicativo. Uma ferramenta de análise de desempenho pode ajudá-lo a tomar decisões informadas de forma rápida, fornecendo uma representação visual dos tempos de execução e do uso da CPU do seu aplicativo. Neste artigo, damos uma rápida olhada nas ferramentas de criação de perfil mais comuns.
Para obter ajuda com a escolha da ferramenta correta ou para ver o suporte à ferramenta de criação de perfil para diferentes tipos de aplicativo, consulte Qual ferramenta devo usar? Para obter um tutorial que mostre uma abordagem geral para otimizar o código usando as ferramentas de criação de perfil, consulte Estudo de caso: guia do iniciante para otimizar o código.
Para obter a melhor experiência com esta documentação, escolha seu idioma de desenvolvimento preferido ou runtime na lista na parte superior do artigo.
Medir o desempenho em builds de versão
As ferramentas no Criador de Perfil de Desempenho servem para fornecer análise para builds de versão. No Perfilador de Desempenho, você pode coletar informações de diagnóstico enquanto o aplicativo está rodando e, em seguida, examinar as informações coletadas após o aplicativo ser interrompido (uma análise post-mortem).
Abra o Criador de Perfil de Desempenho escolhendo Depurar>Criador de Perfil de Desempenho (ou Alt + F2).
do criador de perfil de desempenho do
Para saber mais sobre como usar a ferramenta de uso de memória ou uso de CPU no Criador de Perfil de Desempenho versus as ferramentas integradas ao depurador, confira Executar ferramentas de criação de perfil nos builds de lançamento ou de depuração.
As ferramentas disponíveis no Criador de Perfil de Desempenho incluem:
Para ver o suporte à ferramenta de criação de perfil para diferentes tipos de aplicativo, consulte Qual ferramenta devo usar?.
Em alguns cenários, a janela permite que você selecione várias ferramentas de criação de perfil. Ferramentas como o Uso da CPU podem fornecer dados complementares que você pode usar para ajudar em sua análise. Você também pode usar o profiler da linha de comando para habilitar cenários envolvendo várias ferramentas de perfilamento.
Medir o desempenho durante a depuração
As ferramentas de criação de perfil que você pode acessar durante uma sessão de depuração estão disponíveis na janela Ferramentas de Diagnóstico. A janela Ferramentas de Diagnóstico é exibida automaticamente, a menos que você a tenha desativado. Para abrir a janela, clique em Depurar/Windows/Mostrar Ferramentas de Diagnóstico (ou pressione Ctrl + Alt + F2). Com a janela aberta, você pode selecionar ferramentas para as quais deseja coletar dados.
Janela Ferramentas de Diagnóstico
Durante a depuração, é possível usar a janela Ferramentas de Diagnóstico para analisar o uso da CPU, memória e contadores do .NET, e exibir os eventos que mostram informações relacionadas ao desempenho.
janela ferramentas de diagnóstico de
Durante a depuração, é possível usar a janela Ferramentas de Diagnóstico para analisar o uso da CPU e de memória e exibir os eventos que mostram informações relacionadas ao desempenho.
A janela Ferramentas de Diagnóstico é uma maneira comum de criar perfis de aplicativos, mas para builds de Versão também é possível fazer uma análise post-mortem do aplicativo. Para saber mais sobre as diferentes abordagens, confira Executar ferramentas de criação de perfil builds de lançamento ou de depuração. Para ver o suporte à ferramenta de criação de perfil para diferentes tipos de aplicativo, consulte Qual ferramenta devo usar?.
As ferramentas disponíveis na janela Ferramentas de Diagnóstico ou durante uma sessão de depuração incluem:
- uso da CPU
- Uso de memória
- PerfTips
Dica
Usar o relançamento para ignorar a página de inicialização e executar automaticamente com as configurações anteriores pressionando Alt+F2 ou clicando em Depurar > Criador de Perfil de Desempenho.
Nota
O Windows 8 ou posterior é necessário para executar ferramentas de criação de perfil com o depurador (janela Ferramentas de Diagnóstico).
Analisar o uso da CPU
A ferramenta Uso da CPU é um bom lugar para começar a analisar o desempenho do aplicativo. Ele informará mais sobre os recursos da CPU que seu aplicativo está consumindo. Você pode usar a ferramenta de Uso da CPU integrada ao depurador ou a ferramenta uso da CPU pós-mortem.
Ao usar a ferramenta de uso de CPU integrada ao depurador, abra a janela Ferramenta de Diagnóstico (se estiver fechada, escolha Depurar/Windows/Mostrar Ferramentas de Diagnóstico). Durante a depuração, abra a exibição Resumo e selecione Registrar Perfil de CPU.
Uma maneira de usar a ferramenta é definir dois pontos de interrupção em seu código, um no início e outro no final da função ou a região do código que você deseja analisar. Examine os dados de criação de perfil quando eles estiverem em pausa no segundo ponto de interrupção.
A exibição Uso da CPU mostra uma lista de funções ordenadas pela execução mais longa, com a função de execução mais longa na parte superior sob Principais Funções. A seção Caminho Crítico mostra a pilha de chamadas para as funções que estão usando mais CPU. Essas listas podem ajudar a guiá-lo para funções em que os gargalos de desempenho estão acontecendo.
A exibição Uso da CPU mostra uma lista de funções ordenadas pela execução mais longa, com a função de execução mais longa na parte superior. Isso pode ajudar a orientá-lo a funções em que os gargalos de desempenho estão acontecendo.
Clique em uma função na qual você está interessado, e você verá uma visão mais detalhada da Árvore de chamadas, com a função selecionada destacada. A tabela mostra colunas com dados como o tempo gasto na função, incluindo funções chamadas (CPU total) e uma segunda coluna que mostra o tempo gasto em uma função, excluindo as funções chamadas (Auto CPU). Esses dados podem ajudá-lo a avaliar se a função em si é um gargalo de desempenho.
Dica
O criador de perfil do Visual Studio dá suporte à coleta e à exibição de rastreamentos. O perfilador também pode exibir rastreamentos que foram coletados anteriormente por outras ferramentas, como dotnet-trace. O dotnet-trace produz resultados de amostragem, não um rastreamento instrumentado. Para saber mais, confira dotnet-trace.
Clique em uma função de interesse e você verá uma exibição "borboleta" de três painéis mais detalhada, com a função selecionada no centro da janela, a função de chamada à esquerda e as funções chamadas à direita. A seção Corpo da função também mostra o tempo total (e o percentual de tempo) gasto no corpo da função, excluindo o tempo gasto nas funções de chamada e nas funções chamadas. Esses dados podem ajudá-lo a avaliar se a função em si é um gargalo de desempenho.
Analisar o uso da memória
A janela Ferramentas de Diagnóstico também permite que você avalie o uso de memória em seu aplicativo usando a ferramenta Uso de Memória. Por exemplo, é possível examinar o número e tamanho dos objetos no heap. Você pode usar a ferramenta de Uso de Memória integrada ao depurador ou a ferramenta de Uso de Memória pós-morte no Criador de Perfil de Desempenho.
Os desenvolvedores do .NET podem escolher entre a ferramenta de alocação de objeto do .NET ou a ferramenta de uso de memória.
- A ferramenta de Alocação de Objetos do .NET ajuda a identificar padrões de alocação e anomalias no código .NET e ajuda a identificar problemas comuns com a coleta de lixo. Esta ferramenta funciona apenas em modo post-mortem. Você pode executar essa ferramenta em computadores locais ou remotos.
- A ferramenta de uso de memória é útil para identificar vazamentos de memória, que não são tipicamente comuns em aplicativos .NET. Se você precisa usar recursos do depurador ao verificar a memória, como percorrer o código, a ferramenta de Uso de Memória integrada ao depurador é recomendada.
Para analisar o uso de memória com a ferramenta de Uso de Memória, você precisa tirar pelo menos um instantâneo de memória. Muitas vezes, a melhor maneira de analisar a memória é tirar dois instantâneos; o primeiro logo antes de um suposto problema de memória e o segundo instantâneo logo após um suposto problema de memória ocorrer. Em seguida, você pode exibir uma diferença entre os dois instantâneos e ver exatamente o que mudou. A ilustração a seguir mostra como tirar um instantâneo com a ferramenta integrada ao depurador.
Ao selecionar um dos links de seta, verá uma exibição diferencial do heap (uma seta vermelha para cima mostra uma contagem crescente de objetos (à esquerda) ou um tamanho crescente de heap (à direita)). Se você clicar no link à direita, terá uma exibição diferencial do heap, ordenada por objetos com maior aumento de tamanho de heap. Isso pode ajudá-lo a identificar problemas de memória. Por exemplo, na ilustração abaixo, os bytes usados por objetos
ClassHandlersStore
aumentaram em 3.492 bytes na segunda captura.
Se você clicar no link à esquerda, na exibição Uso de Memória, a exibição do heap será organizada pela contagem de objetos: os objetos de um tipo específico com maior aumento em número são mostrados na parte superior (classificados pela coluna Comparação de Contagem).
Instrumentação
A ferramenta de instrumentação é semelhante à ferramenta Uso da CPU, mas ela fornece contagens de chamada exatas e é baseada na hora do relógio em vez de na utilização da CPU. O método de instrumentação requer mais sobrecarga de recursos do que a ferramenta de uso da CPU. Essa ferramenta está disponível no Analisador de Desempenho. Abra o Perfilador de Desempenho escolhendo Debug>Performance Profiler (ou Alt + F2). Para saber mais, confira Instrumentação.
Examinar E/S do Arquivo
A ferramenta de E/S de Arquivo ajuda a entender como você pode otimizar suas operações de E/S de Arquivo para melhorar o desempenho em seus aplicativos. Se você estiver tentando investigar e diagnosticar tempos de carregamento lentos, a nova ferramenta para E/S de arquivos pode ajudá-lo a entender como as operações de E/S impactam o tempo que você gasta. Essa ferramenta está disponível no Analisador de Desempenho. Abra o Criador de Perfil de Desempenho escolhendo Depurar > Criador de Perfil de Desempenho (ou Alt + F2).
A ferramenta mostra operações de leitura e gravação de arquivo em uma exibição de lista com guias.
Examinar o desempenho usando PerfTips
Geralmente, a maneira mais fácil de exibir informações de desempenho é usar perfTips . Usando PerfTips, você pode exibir informações de desempenho ao interagir com seu código. Você pode verificar informações como a duração do evento (medida de quando o depurador foi pausado pela última vez ou quando o aplicativo foi iniciado). Por exemplo, se você passar pelo código (F10, F11), o PerfTips mostrará a duração do tempo de execução do aplicativo da operação da etapa anterior até a etapa atual.
Você pode usar PerfTips para examinar quanto tempo leva para um bloco de código ser executado ou quanto tempo leva para uma única função ser concluída.
PerfTips mostram os mesmos eventos que também aparecem na exibição Eventos das Ferramentas de Diagnóstico. A exibição Eventos das Ferramentas de Diagnóstico mostra diferentes eventos que ocorrem durante a depuração, como a configuração de um ponto de interrupção ou uma operação de depuração passo a passo de código.
Nota
Se você tiver o Visual Studio Enterprise, também poderá ver eventos do IntelliTrace nessa guia.
Analisar código assíncrono (.NET)
A ferramenta assíncrona do .NET permite analisar o desempenho do código assíncrono em seu aplicativo. Essa ferramenta está disponível no Analisador de Desempenho. Abra o Criador de Perfil de Desempenho escolhendo Depurar>Criador de Perfil de Desempenho (ou Alt + F2).
A ferramenta mostra cada operação assíncrona em um modo de exibição de lista. Você pode ver informações como a hora de início, a hora de término e o tempo total de uma operação assíncrona.
Essa ferramenta tem suporte para aplicativos .NET Core e .NET 5+.
Analisar código assíncrono (.NET)
A ferramenta assíncrona do .NET permite analisar o desempenho do código assíncrono em seu aplicativo. Essa ferramenta está disponível no Analisador de Desempenho. Abra o Criador de Perfil de Desempenho escolhendo Depurar>Criador de Perfil de Desempenho (ou Alt + F2).
A ferramenta mostra cada operação assíncrona em um modo de exibição de lista. Você pode ver informações como a hora de início, a hora de término e o tempo total de uma operação assíncrona.
Essa ferramenta tem suporte para aplicativos .NET Core e .NET 5+.
Analisar o desempenho do banco de dados (.NET)
Para aplicativos .NET Core e .NET 5+ que usam ADO.NET ou Entity Framework Core, a ferramenta banco de dados permite que você registre as consultas de banco de dados que seu aplicativo faz durante uma sessão de diagnóstico. Em seguida, você pode analisar informações sobre consultas individuais para encontrar locais em que o desempenho do aplicativo possa ser melhorado. Essa ferramenta está disponível no Perfil de Desempenho. Abra o Criador de Perfil de Desempenho escolhendo Depurar>Criador de Perfil de Desempenho (ou Alt + F2).
A ferramenta mostra cada consulta em um modo de exibição de lista. Você pode ver informações como a hora de início e a duração da consulta.
Visualizar contadores do .NET (.NET)
A partir do Visual Studio 2019 versão 16.7, você pode usar a ferramenta .NET Counters no Visual Studio para visualizar contadores de desempenho. Você pode visualizar contadores criados usando contadores dotnet. Os contadores dotnet dão suporte a muitos contadores, como o uso da CPU e o tamanho do heap do coletor de lixo.
A ferramenta mostra valores dinâmicos para cada contador em um modo de exibição de lista.
Essa ferramenta tem suporte para aplicativos .NET Core e .NET 5+.
Examinar eventos de aplicativo
O visualizador de eventos genérico permite que você veja a atividade do seu aplicativo por meio de uma lista de eventos, como carregamento de módulo, início de thread e configurações do sistema, para ajudar a diagnosticar de forma mais eficaz como seu aplicativo está se comportando diretamente no profiler do Visual Studio. Essa ferramenta está disponível no Analisador de Desempenho. Abra o Criador de Perfil de Desempenho escolhendo Depurar>Criador de Perfil de Desempenho (ou Alt + F2).
A ferramenta mostra cada evento em um modo de exibição de lista. As colunas fornecem informações sobre cada evento, como o nome do evento, o carimbo de data/hora e a ID do processo.
Exibir eventos personalizados nos grafos da linha do tempo
Você pode criar programaticamente eventos personalizados que aparecem como ícones nos grafos da linha do tempo, como a utilização da CPU e os grafos da linha do tempo de uso da memória. Para obter mais informações, consulte Adicionar marcas de usuário à linha do tempo.
Analisar o consumo de recursos (XAML)
Em aplicativos XAML, como aplicativos WPF da área de trabalho do Windows e aplicativos UWP, você pode analisar o consumo de recursos usando a ferramenta Linha do Tempo do Aplicativo. Por exemplo, você pode analisar o tempo gasto pelo aplicativo preparando quadros de interface do usuário (layout e renderização), atendendo a solicitações de rede e disco, e em cenários como inicialização do aplicativo, carregamento de página e redimensionar a janela. Para usar a ferramenta, escolha Linha do Tempo do Aplicativo no Criador de Perfil de Desempenho e, em seguida, escolha Iniciar. No aplicativo, percorra o cenário com um problema de consumo de recursos suspeito e escolha Parar coleta para gerar o relatório.
Taxas de quadros baixas no gráfico Taxa de transferência visual podem corresponder aos problemas visuais vistos ao executar o aplicativo. Da mesma forma, números elevados no gráfico Utilização de thread de interface do usuário também podem corresponder a problemas de capacidade de resposta da interface do usuário. No relatório, você pode selecionar um período de tempo com um problema de desempenho suspeito e, em seguida, examinar as atividades detalhadas do thread da interface do usuário na visualização de detalhes da Linha do Tempo (painel inferior).
Na exibição de detalhes da Linha do Tempo, você pode encontrar informações como o tipo de atividade (ou o elemento de interface do usuário envolvido) juntamente com a duração da atividade. Por exemplo, na ilustração, um evento Layout de um controle Grade usa 57,53 ms.
Para obter mais informações, consulte Linha do Tempo do Aplicativo.
Examinar eventos de desempenho e acessibilidade da interface do usuário (UWP)
Nos aplicativos UWP, é possível habilitar a Análise de interface do usuário na janela Ferramentas de Diagnóstico. A ferramenta pesquisa problemas comuns de desempenho ou de acessibilidade, mostrando-os na exibição Eventos durante a depuração. As descrições do evento fornecem informações que podem ajudar a resolver problemas.
Analisar o uso da GPU (Direct3D)
Em aplicativos Direct3D (os componentes direct3D devem estar em C++), você pode examinar a atividade na GPU e analisar problemas de desempenho. Para obter mais informações, consulte Uso de GPU. Para usar a ferramenta, escolha Uso da GPU no Criador de Perfil de Desempenho e, em seguida, escolha Iniciar. No aplicativo, percorra o cenário de interesse na criação de perfil e, em seguida, escolha Parar coleta para gerar um relatório.
Quando você seleciona um período de tempo nos grafos e escolhe exibir detalhes, uma exibição detalhada aparece no painel inferior. Na exibição detalhada, você pode examinar a quantidade de atividade que está acontecendo em cada CPU e GPU. Selecione eventos no painel mais baixo para obter pop-ups na linha do tempo. Por exemplo, selecione o eventos Presente para exibir pop-ups da chamada Presente. (As linhas VSync verticais cinza claro podem ser usadas como referência para entender se determinadas chamadas de Present perderam o VSync. Deve haver uma chamada Present entre cada dois VSyncs para que o aplicativo atinja consistentemente 60 FPS.)
Você também pode usar os grafos para determinar se há gargalos de desempenho associados à CPU ou à GPU.
Analisar o desempenho (ferramentas herdadas)
No Visual Studio 2019, o Gerenciador de Desempenho herdado e as ferramentas de criação de perfil relacionadas, como o Assistente de Desempenho, foram incluídas no Criador de Perfil de Desempenho, que pode ser aberto usando o Depurar>Criador de Perfil de Desempenho. No Analisador de Desempenho, as ferramentas de diagnóstico disponíveis dependem do destino escolhido e do projeto de inicialização atualmente aberto. A ferramenta Uso da CPU fornece a capacidade de amostragem com suporte prévio no Assistente de Desempenho. A ferramenta Instrumentação fornece a capacidade de criação de perfil instrumentada (para contagens e durações precisas de chamadas) que estava no Assistente de Desempenho. Ferramentas de memória adicionais também aparecem no Analisador de Desempenho.