Primeiro, examine as 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 o 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 ajudar você a diagnosticar o uso de memória e de CPU e outros problemas no nível do aplicativo. Com essas ferramentas, você pode acumular dados de desempenho enquanto executa o aplicativo. Um criador de perfil pode ajudá-lo a tomar decisões informadas rapidamente fornecendo uma representação visual dos tempos de execução e do uso da CPU para seu aplicativo. Neste artigo, vamos dar 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 tipos diferentes de aplicativo, confira Qual ferramenta devo usar?

Usar um criador de perfil para melhorar o desempenho

Se você for um desenvolvedor que esteve de sobreaviso com relação à base de código da sua equipe ou que escreveu um aplicativo Web, talvez tenha se perguntado por que seu aplicativo está com tempos de resposta lentos? Muitas vezes, os problemas estão na produção, e é desafiador investigar nesse momento, mas as ferramentas de criação de perfil podem ajudar você a capturar informações e evidências suficientes do problema.

Há várias maneiras de diagnosticar problemas de desempenho quando você está trabalhando com APIs, mas usar um criador de perfil pode ajudar você a identificar e descartar rapidamente possíveis causas para que você tenha um caminho claro para resolver o problema.

Na engenharia de software, um criador de perfil é uma ferramenta usada para ajudá-lo a analisar o desempenho de seus aplicativos para melhorar o código de baixo desempenho. Ferramentas de diagnóstico e criação de perfil ajudam você a diagnosticar o uso de memória e de CPU, além de outros problemas no aplicativo. Com essas ferramentas, você pode coletar dados de desempenho enquanto executa o aplicativo.

Um criador de perfil pode ajudá-lo a tomar decisões informadas rapidamente fornecendo uma representação visual dos tempos de execução e do uso da CPU para seu aplicativo. É muito mais fácil e rápido entender os problemas e corrigi-los quando você pode ver um grafo dos tempos de execução ou do uso da CPU. Para obter uma abordagem geral para otimizar o código usando as ferramentas de criação de perfil, confira Reduzir custos de computação usando ferramentas de criação de perfil.

Medir o desempenho durante a depuração

As ferramentas de criação de perfil que podem ser acessadas 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 tenha sido desativada. Para abrir a janela, clique em Depurar/Windows/Mostrar Ferramentas de Diagnóstico (ou pressione Ctrl + Alt + F2). Com a janela aberta, é possível selecionar ferramentas para as quais você deseja coletar dados.

Diagnostic Tools window

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.

Diagnostic Tools window

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.

Diagnostic Tools Summary view

Diagnostic Tools Summary view

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 com ou sem o depurador. Para ver o suporte à ferramentas de criação de perfil para tipos diferentes de aplicativo, confira Qual ferramenta devo usar?.

As ferramentas disponíveis na janela Ferramentas de Diagnóstico ou durante uma sessão de depuração incluem:

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.

Observação

O Windows 8 ou posterior é necessário para executar ferramentas de criação de perfil com o depurador (janela Ferramentas de Diagnóstico). Você pode usar as ferramentas post-mortem com o Windows 7 e posteriores.

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 Criador de Perfil de Desempenho, é possível coletar informações de diagnóstico durante a execução do aplicativo e, em seguida, examinar as informações coletadas após a interrupção do aplicativo (uma análise post-mortem).

Abra o Criador de Perfil de Desempenho escolhendo Depurar>Criador de Perfil de Desempenho (ou Alt + F2).

Performance Profiler

Performance Profiler

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 com ou sem o depurador.

As ferramentas disponíveis no Criador de Perfil de Desempenho incluem:

Para ver o suporte à ferramentas de criação de perfil para tipos diferentes de aplicativo, confira Qual ferramenta devo usar?.

Em alguns cenários, a janela permite que você selecione várias ferramentas de criação de perfil. Ferramentas como Uso da CPU podem fornecer dados complementares que podem ser usados para ajudar na análise. Você também pode usar o criador de perfil de linha de comando para habilitar cenários que envolvem várias ferramentas de criação de perfil.

Examinar o desempenho usando PerfTips

Geralmente, a maneira mais fácil de exibir informações de desempenho é usando PerfTips. Usando PerfTips, você pode exibir informações de desempenho ao interagir com seu código. É possível verificar informações como a duração do evento (medido da última pausa do depurador ou da inicialização do aplicativo). Por exemplo, se você executar o código em etapas (F10, F11), PerfTips mostrará a duração de runtime do aplicativo da operação da etapa anterior até a etapa atual.

Profiling Tour PerfTips

Profiling Tour PerfTips

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.

Diagnostic Tools Events view

Diagnostic Tools Events view

Observação

Se você tiver o Visual Studio Enterprise, também poderá ver eventos do IntelliTrace nessa guia.

Analisar o uso de CPU

A ferramenta Uso da CPU é um bom lugar para começar a analisar o desempenho do aplicativo. Ela informará mais sobre os recursos de CPU que o 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 da CPU integrada ao depurador, abra a janela Ferramenta de Diagnóstico (se ela 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.

Enable CPU usage in the Diagnostic Tools

Enable CPU usage in the Diagnostic Tools

Uma forma de usar a ferramenta é definir dois pontos de interrupção no código: um no início e outro no final da função ou na região de 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 levar você para funções em que estão ocorrendo gargalos de desempenho.

Diagnostic Tools CPU Usage view

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 levá-lo para as funções em que estão ocorrendo gargalos de desempenho.

Diagnostic Tools CPU Usage view

Clique em uma função na qual você está interessado e verá uma exibição de Árvore de chamadas mais detalhada, com a função selecionada realçada. 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 própria função é um gargalo de desempenho.

Dica

O criador de perfil do Visual Studio dá suporte à coleta e à exibição de rastreamentos. O criador de perfil 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.

Diagnostic Tools caller callee

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 própria função é um gargalo de desempenho.

Diagnostic Tools caller callee

Analisar o uso de memória

A janela Ferramentas de Diagnóstico também permite avaliar 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 Objetos do .NET ou a ferramenta de Uso de Memória.

  • A ferramenta de Alocação de Objetos do .NET ajuda você 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. Essa ferramenta é executada apenas como uma ferramenta post-mortem. Você pode executar essa ferramenta em computadores locais ou remotos.
  • A ferramenta Uso de memória é útil para identificar perdas de memória, que normalmente não são 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 Uso de Memória, tire pelo menos um instantâneo de memória. Em geral, a melhor maneira de analisar a memória é usar dois instantâneos: o primeiro, logo antes de um problema de memória suspeito e o segundo instantâneo, logo após a ocorrência de um problema de memória suspeito. Depois, é possível exibir uma comparação dos 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.

Take a snapshot in the Diagnostic Tools

Take a snapshot in the Diagnostic Tools

Ao selecionar um dos links de seta, você obtém uma exibição diferencial do heap (uma seta vermelha para cima Memory Usage Increase mostra uma contagem crescente de objetos crescente à esquerda ou um tamanho de heap crescente à 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 no segundo instantâneo.

Diagnostic Tools heap diff view

Diagnostic Tools heap diff view

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).

Analisar código assíncrono (.NET)

A ferramenta .NET Async permite que você analise o desempenho do código assíncrono em seu aplicativo. Essa ferramenta está disponível no Criador de Perfil 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 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.

.NET Async Tool Stopped

Analisar código assíncrono (.NET)

A ferramenta .NET Async permite que você analise o desempenho do código assíncrono em seu aplicativo. Essa ferramenta está disponível no Criador de Perfil 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 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.

.NET Async Tool Stopped

Examinar eventos de aplicativo

O visualizador de eventos genéricos permite que você exiba a atividade do aplicativo por meio de uma lista de eventos, como carga de módulo, início de thread e configurações do sistema, para ajudar a diagnosticar melhor o desempenho do seu aplicativo diretamente dentro do criador de perfil do Visual Studio. Essa ferramenta está disponível no Criador de Perfil 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 uma 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.

Event Viewer Trace

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 do que a ferramenta Uso da CPU. Essa ferramenta está disponível no Criador de Perfil de Desempenho. Abra o Criador de Perfil de Desempenho escolhendo Depurar>Criador de Perfil de Desempenho (ou Alt + F2). Para saber mais, confira Instrumentação.

Screenshot showing .NET Instrumentation data.

Examinar E/S do Arquivo

A ferramenta E/S de Arquivo ajuda você a entender como 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 de E/S de Arquivo poderá ajudá-lo a entender como as operações de E/S afetam o tempo gasto. Essa ferramenta está disponível no Criador de Perfil de Desempenho. Abra o Criador de Perfil de Desempenho escolhendo Depurar > Criador de Perfil de Desempenho (ou Alt + F2).

A ferramenta mostra as operações de leitura e gravação de arquivo em uma exibição de lista com guias.

Screenshot showing File IO tool stopped.

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 em que o desempenho do aplicativo possa ser melhorado. Essa ferramenta está disponível no Criador de 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 uma exibição de lista. Você pode ver informações como a hora de início e a duração da consulta.

Allocation

Visualizar contadores de .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 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 uma exibição de lista.

.NET Counter tool collecting.

Analisar o consumo de recursos (XAML)

Em aplicativos XAML, como aplicativos WPF da área de trabalho do Windows e aplicativos UWP, é possível analisar o consumo de recursos usando a ferramenta Linha do Tempo do Aplicativo. Por exemplo, é possível analisar o tempo gasto pelo aplicativo para preparar quadros de interface do usuário (layout e renderização), atender a solicitações de rede e de disco e em cenários como inicialização do aplicativo, carregamento de página e redimensionamento do Windows. 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, é possível selecionar um período com um problema de desempenho suspeito e, em seguida, examinar as atividades detalhadas de thread de interface do usuário na exibição Detalhes da linha do tempo (painel inferior).

Application Timeline profiling tool

Application Timeline profiling tool

Na exibição Detalhes da linha do tempo, você encontrará informações como o tipo de atividade (ou o elemento de interface do usuário envolvido) junto 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 os eventos de desempenho e de 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 de eventos fornecem informações que podem ajudar a resolver problemas.

View UI analysis events in the diagnostic tools

View UI analysis events in the diagnostic tools

Analisar o uso da GPU (Direct3D)

Em aplicativos Direct3D (os componentes Direct3D devem estar no C++), é possível examinar a atividade na GPU e analisar problemas de desempenho. Para obter mais informações, consulte Uso da 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.

Ao selecionar um período nos gráficos e escolher Exibir detalhes, uma exibição detalhada será exibida no painel inferior. Na exibição detalhada, é possível examinar as atividades que estão ocorrendo em cada CPU e GPU. Selecione eventos no painel inferior 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 Presentes perderam VSync. Deve haver uma chamada Presente entre cada dois VSyncs para que o aplicativo atinja constantemente 60 FPS.)

GPU Usage profiling tool

GPU Usage profiling tool

Também é possível usar os gráficos para determinar se há gargalos de desempenho limitados à 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 Criador de Perfil de Desempenho, 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 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 Criador de Perfil de Desempenho.

Performance Explorer tool