Primeira olhada nas ferramentas de criação de perfil (C#, Visual Basic, C++, F#)
As ferramentas de medição de desempenho de aplicativos 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 profiling pode ajudá-lo a tomar decisões informadas rapidamente, fornecendo uma representação visual dos tempos de execução e da utilização da CPU para a sua aplicação. Neste artigo, damos uma olhada rápida 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 aplicativos, consulte Qual ferramenta devo usar? Para obter um tutorial que mostra uma abordagem geral para otimizar o código usando as ferramentas de criação de perfil, consulte Estudo de caso: Guia para iniciantes para otimizar o código.
Meça o desempenho em compilações de versão
As ferramentas destinadas a fornecer análise para compilações do Release estão no Performance Profiler. Na Performance Profiler, você pode coletar informações de diagnóstico enquanto o aplicativo está em execução e, em seguida, examinar as informações coletadas depois que o aplicativo for interrompido (uma análise post-mortem).
Abra o Performance Profiler escolhendo Debug>Performance Profiler (ou Alt + F2).
Para obter mais informações sobre como usar as ferramentas de Uso da CPU e Uso da memória no Performance Profiler em comparação com as ferramentas integradas ao depurador, consulte Executar ferramentas de criação de perfil em compilações de versão ou de depuração.
As ferramentas disponíveis no Performance Profiler incluem:
- Uso da CPU
- Alocação de objetos .NET
- Uso de Memória
- Instrumentação
- ferramenta assíncrona do .NET
- E/S de arquivo
- .NET Contadores
- ferramenta de banco de dados
- Uso da GPU
Para ver o suporte à ferramenta de criação de perfil para diferentes tipos de aplicativos, 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 na sua análise. Você também pode usar o criador de perfil de linha de comando para habilitar cenários que envolvem o uso de várias ferramentas de criação de perfil.
Meça 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 aparece 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.
Durante a depuração, pode-se usar a janela Ferramentas de Diagnóstico para analisar a CPU, o uso da memória, os contadores do .NET e visualizar eventos que mostram informações relacionadas ao desempenho.
Durante a depuração, você pode usar a janela Ferramentas de Diagnóstico
A janela Ferramentas de Diagnóstico é uma maneira comum de analisar o desempenho de aplicações, mas para compilações de versão pode também fazer análise post-mortem do seu aplicativo. Para obter mais informações sobre diferentes abordagens, consulte Executar ferramentas de criação de perfil em compilações de lançamento ou depuração. Para ver o suporte à ferramenta de criação de perfil para diferentes tipos de aplicativos, 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
- Contadores .NET
- Dicas de Desempenho
Dica
Use o relançamento para ignorar a página de lançamento e executar automaticamente com as suas configurações anteriores pressionando Alt+F2 ou clicando Depurar > Analisador de Desempenho.
Observação
O Windows 8 ou posterior é necessário para executar ferramentas de profiling com o debugger (janela Ferramentas de Diagnóstico).
Analise o uso da CPU
A ferramenta Uso da CPU é um bom lugar para começar a analisar o desempenho do seu 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 de Uso da CPU post-mortem .
Ao usar a ferramenta de uso da CPU integrada ao depurador, abra a janela Ferramentas de Diagnóstico (se estiver fechada, escolha Depurar / Windows / Mostrar Ferramentas de Diagnóstico). Durante a depuração, abra a visualização Resumo e selecione Gravar 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 da região de código que você deseja analisar. Examine os dados de desempenho quando estiver pausado no segundo ponto de paragem.
A visualização Uso da CPU mostra uma lista de funções ordenadas pela duração de execução, com a função de execução mais longa listada primeiro sob Principais Funções. A secção Hot Path apresenta o stack de chamadas das funções que estão a consumir mais CPU. Essas listas podem ajudar a guiá-lo para funções onde os gargalos de desempenho estão acontecendo.
A visualização Uso da CPU mostra uma lista de funções ordenadas por tempo de execução mais longo, com a função com o tempo de execução mais longo na parte superior. Isso pode ajudar a guiá-lo para funções onde gargalos de desempenho estão acontecendo.
Ferramentas de Diagnóstico Uso da CPU
Clique numa função que lhe interesse, e verá uma visualização mais detalhada da árvore de chamadas, com a função selecionada realçada. A tabela mostra colunas com dados como o tempo gasto na função, incluindo funções chamadas (Total CPU), e uma segunda coluna que mostra o tempo gasto numa função, excluindo funções chamadas (Self CPU). Esses dados podem ajudá-lo a avaliar se a função em si é um gargalo de desempenho.
Dica
O profiler do Visual Studio suporta tanto a recolha como a visualização de rastreamentos. O perfilador também pode exibir rastreios que foram coletados anteriormente por outras ferramentas, como dotnet-trace. O Dotnet-trace produz resultados de amostragem, não um traço instrumentado. Para obter mais informações, consulte dotnet-trace.
Clique na função que lhe interessa e verá uma visão mais detalhada de "borboleta" com três painéis, com a função selecionada no meio da janela, a função que chama à esquerda e as funções chamadas à direita. A seção Function Body mostra a quantidade total de tempo (e a porcentagem de tempo) gasto no corpo da função, excluindo o tempo gasto em chamadas e funções chamadas. Esses dados podem ajudá-lo a avaliar se a função em si é um gargalo de desempenho.
Analise o uso da memória
A janela Ferramentas de Diagnóstico também permite avaliar o uso de memória na sua aplicação usando a ferramenta de Uso de Memória. Por exemplo, você pode examinar o número e o tamanho dos objetos na pilha. Você pode usar a ferramenta de Utilização de Memória integrada ao depurador de ou a ferramenta de Utilização de Memória post-mortem no Analisador de Desempenho.
Os desenvolvedores do .NET podem escolher entre a ferramenta .NET Object Allocation ou a ferramenta de uso de memória.
- A ferramenta de Alocação de Objetos .NET ajuda a identificar padrões de alocação e anomalias em seu código .NET e ajuda a identificar problemas comuns com a coleta de lixo. Esta ferramenta é executada apenas como uma ferramenta de análise post-mortem. Você pode executar essa ferramenta em máquinas locais ou remotas.
- A ferramenta de uso de memória é útil para identificar vazamentos de memória, que normalmente não são comuns em aplicativos .NET. Se precisar usar os recursos do depurador durante a verificação da memória, como avançar no 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 problema de memória suspeito e o segundo instantâneo logo após ocorrer um problema de memória suspeito. Em seguida, podes comparar a 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.
Quando você seleciona um dos links de seta, você recebe uma visão diferencial da pilha (uma seta vermelha para cima mostra uma contagem crescente de objetos (esquerda) ou um tamanho de pilha crescente (direita)). Se clicares no link certo, obténs uma visualização diferencial do heap ordenada pelos objetos que mais aumentaram em tamanho de heap. Isso pode ajudá-lo a identificar problemas de memória. Por exemplo, na ilustração abaixo, os bytes usados pelos objetos ClassHandlersStore
aumentaram em 3.492 bytes na segunda captura.
Se clicar no link à esquerda na visualização Uso da Memória, a visualização de pilha será organizada por contagem de objetos; os objetos de um tipo específico que mais aumentaram em número são mostrados na parte superior (ordenados pela coluna de diferença de contagem ).
Instrumentação
A ferramenta Instrumentação é semelhante à ferramenta Uso da CPU, exceto que fornece contagens exatas de chamadas e tempo de relógio de parede em vez da utilização da CPU. O método de instrumentação requer mais sobrecarga do que a ferramenta de uso da CPU. Esta ferramenta está disponível no Performance Profiler. Abra o Performance Profiler escolhendo Debug>Performance Profiler (ou Alt + F2). Para obter mais informações, consulte Instrumentation.
Examinar E/S de Ficheiro
A ferramenta E/S de arquivos ajuda você a entender como você pode otimizar suas operações de E/S de arquivos para melhorar o desempenho em seus aplicativos. Se estiveres a tentar investigar e diagnosticar tempos de carregamento lentos, a nova ferramenta de E/S de ficheiros pode ajudar-te a entender como as operações de E/S afetam o tempo que despende. Esta ferramenta está disponível no Performance Profiler. Abra o Performance Profiler escolhendo Debug > Performance Profiler (ou Alt + F2).
A ferramenta mostra operações de leitura e gravação de arquivos em um modo de exibição de lista com guias.
Examine o desempenho usando PerfTips
Muitas vezes, a maneira mais fácil de visualizar informações de desempenho é usar PerfTips. Usando PerfTips, você pode visualizar informações de desempenho enquanto interage com seu código. Você pode verificar informações como a duração do evento (medida a partir de quando o depurador foi pausado pela última vez ou quando o aplicativo foi iniciado). Por exemplo, se percorrer o código (F10, F11), o PerfTips mostra a duração da execução do aplicativo desde a operação da etapa anterior até à 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.
As PerfTips mostram os mesmos eventos que também aparecem na visualização Eventos
Observação
Se tiver o Visual Studio Enterprise, também pode ver eventos do IntelliTrace neste separador.
Analisar código assíncrono (.NET)
A ferramenta .NET Async permite que você analise o desempenho de código assíncrono em seu aplicativo. Esta ferramenta está disponível no Performance Profiler. Abra o Performance Profiler escolhendo Debug>Performance Profiler (ou Alt + F2).
A ferramenta mostra cada operação assíncrona em uma 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.
Analisar código assíncrono (.NET)
A ferramenta .NET Async permite que você analise o desempenho de código assíncrono em seu aplicativo. Esta ferramenta está disponível no Performance Profiler. Abra o Performance Profiler escolhendo Debug>Performance Profiler (ou Alt + F2).
A ferramenta mostra cada operação assíncrona em uma 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.
Analisar o desempenho do banco de dados (.NET Core)
Para aplicativos .NET Core 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 onde o desempenho do seu aplicativo pode ser melhorado. Esta ferramenta está disponível no Performance Profiler. Abra o Performance Profiler escolhendo Debug>Performance Profiler (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 .NET (.NET Core)
A partir do Visual Studio 2019 versão 16.7, você pode usar a ferramenta Contadores do .NET no Visual Studio para visualizar contadores de desempenho. Você pode visualizar contadores criados usando dotnet counters. Os dotnet counters suportam 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 uma exibição de lista.
Examinar eventos do aplicativo
O genérico do visualizador de eventos
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, carimbo de data/hora e ID do processo.
Exibir eventos personalizados nos gráficos da linha do tempo
Você pode criar programaticamente eventos personalizados que aparecem como ícones nos gráficos de linha do tempo, como os gráficos de utilização da CPU e 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 seu aplicativo preparando quadros da interface do usuário (layout e renderização), atendendo solicitações de rede e disco e em cenários como inicialização do aplicativo, carregamento de página e redimensionamento de janela. Para usar a ferramenta, escolha Cronologia da Aplicação no Perfil de Desempenho e, em seguida, escolha Iniciar. Em seu aplicativo, percorra o cenário com um problema suspeito de consumo de recursos e escolha Parar coleta para gerar o relatório.
Taxas de quadros baixas no gráfico de rendimento visual de
Na vista de detalhes da linha do tempo, pode encontrar informações como o tipo de atividade (ou o elemento da interface de utilizador envolvido) juntamente com a duração da atividade. Por exemplo, na ilustração, um evento Layout para um controlo de grelha leva 57,53 ms.
Para obter mais informações, consulte Linha do tempo da aplicação.
Examinar eventos de desempenho e acessibilidade da interface do usuário (UWP)
Em os seus aplicativos UWP, pode ativar a Análise da Interface do Utilizador na janela de Ferramentas de Diagnóstico . A ferramenta procura problemas comuns de desempenho ou acessibilidade e os exibe na vista de eventos enquanto está a depurar. As descrições dos eventos 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 da GPU. Para usar a ferramenta, escolha de uso da GPU no Performance Profiler e, em seguida, escolha Iniciar. No seu aplicativo, percorra o cenário em que está interessado em analisar e escolha Parar a recolha para gerar um relatório.
Quando você seleciona um período de tempo nos gráficos e escolhe exibir detalhes, uma exibição detalhada aparece no painel inferior. Na visualização detalhada, você pode examinar quanta atividade 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 evento Presente para exibir pop-ups de chamada Presente. (As linhas verticais VSync cinza claro podem ser usadas como referência para compreender se determinadas chamadas 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 gráficos para determinar se há gargalos de desempenho vinculados à CPU ou à GPU.
Analise o desempenho (ferramentas herdadas)
No Visual Studio 2019, o Performance Explorer herdado e as ferramentas de criação de perfil relacionadas, como o Assistente de Desempenho, foram dobrados no Performance Profiler, que você pode abrir usando Debug>Performance Profiler. No Performance Profiler, as ferramentas de diagnóstico disponíveis dependem do destino escolhido e do projeto de inicialização aberto atual. A ferramenta Uso da CPU fornece a capacidade de amostragem anteriormente suportada no Assistente de Desempenho. A ferramenta Instrumentação fornece o recurso de criação de perfil instrumentado (para contagens e durações precisas de chamadas) que estava no Assistente de Desempenho. Ferramentas de memória adicionais também aparecem no Performance Profiler.