Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Você pode usar as ferramentas de criação de perfil para coletar e exibir dados BenchmarkDotNet no Visual Studio. O BenchmarkDotNet é uma biblioteca .NET open-source concebida para benchmarking de desempenho. Automatiza o processo de medir e comparar o tempo de execução, o uso de memória e outras métricas de desempenho do seu código .NET de forma fiável e repetível.
Usa o BenchmarkDotNet instalando os pacotes NuGet necessários no seu projeto e depois adicionando atributos ao seu código que correspondam ao tipo de informação de desempenho que lhe interessa.
Pré-requisitos
Visual Studio 2022 versão 17.9 ou posterior
Seu projeto de benchmark deve incluir os dois pacotes NuGet a seguir:
Se você usar o modelo de projeto Benchmark, esses pacotes NuGet estarão presentes quando você criar o projeto.
Configure o seu projeto
Os atributos de benchmark devem ser adicionados a uma aplicação de consola .NET. Os atributos podem ser adicionados a funções de wrapper que referenciam outros tipos de projeto.
Para preparar o seu projeto para suporte ao BenchmarkDotNet, utilize um dos seguintes métodos:
Abra um projeto de consola existente ou crie um novo projeto de consola. Neste cenário, adiciona-se manualmente suporte ao BenchmarkDotNet.
Use o modelo Benchmark Project . Algumas das etapas descritas neste artigo são necessárias somente quando você adiciona manualmente o suporte a BenchmarkDotNet.
O modelo Benchmark Project gera um projeto BenchmarkDotNet totalmente integrado com suporte integrado para criação de perfil de uso da CPU e insights do Copilot. Para usar o modelo, selecione Criação de perfil na lista de tipos de projeto ao criar um novo projeto e escolha Projeto de referência. Para informações sobre atributos, consulte Atribuir o seu código.
Crie um projeto de consola ou use um projeto de consola já existente.
Os atributos de benchmark devem ser adicionados a uma aplicação de consola .NET. Os atributos podem ser adicionados a funções de wrapper que referenciam outros tipos de projeto.
Atribua o teu código
Quando adicionas um diagnóstico BenchmarkDotNet às tuas classes de benchmark como um atributo, configuras a aplicação para gerar um ficheiro .diagsession após a execução dos benchmarks. Depois podes abrir o ficheiro .diagsession no Visual Studio e visualizar os dados de perfil para os benchmarks.
Os seguintes diagnosticadores são suportados:
- Diagnóstico de Uso da CPU
- Diagnosticador de Base de Dados
- DotNetCountersDiagnoser
- EventsDiagnoser
- FileIODiagnoser
Cada diagnosticador gera dados de desempenho relacionados a esse diagnosticador. Por exemplo, o CPUUsageDiagnoser gera um arquivo .diagsession com dados da CPU e o DatabaseDiagnoser gera um arquivo .diagsession com dados sobre operações de banco de dados. As limitações correspondem à ferramenta de criação de perfil associada. Por exemplo, a ferramenta Database do criador de perfil funciona em ADO.NET ou Entity Framework Core.
Para atribuir o seu código em ferramentas de diagnóstico e referências de desempenho:
Adicione o nome do diagnosticador como um atributo à classe que contém os parâmetros de referência para os quais você deseja gerar dados.
Adiciona o
Benchmarkatributo aos métodos que queres testar para desempenho.Por exemplo, você pode usar o código a seguir para CPUUsageDiagnoser.
Se você estiver usando o modelo Projeto de Benchmark , o código de exemplo já é fornecido no modelo. Se você estiver adicionando manualmente o suporte a BenchmarkDotNet, poderá usar o código de exemplo a seguir.
using System; using System.Security.Cryptography; using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Running; using Microsoft.VSDiagnostics; namespace MyBenchmarks { [CPUUsageDiagnoser] public class Md5VsSha256 { private const int N = 10000; private readonly byte[] data; private readonly SHA256 sha256 = SHA256.Create(); private readonly MD5 md5 = MD5.Create(); public Md5VsSha256() { data = new byte[N]; new Random(42).NextBytes(data); } [Benchmark] public byte[] Sha256() => sha256.ComputeHash(data); [Benchmark] public byte[] Md5() => md5.ComputeHash(data); } public class Program { public static void Main(string[] args) { var summary = BenchmarkRunner.Run(typeof(Program).Assembly); } } }
Recolha e visualize Benchmark.NET dados
Define a tua build para Release em vez de Debug.
Execute o aplicativo para gerar o arquivo .diagsession .
Verifique a saída do console para obter a localização do arquivo. Por exemplo:
// * Diagnostic Output - VSDiagnosticsDiagnoser * Collection result moved to 'BenchmarkDotNet_Md5VsSha256_20231218_123326.diagsession'. Session : {7f38bcc2-c692-4266-aa24-b12bc5325ea4} Stopped Exported diagsession file: *.diagsessionNo Visual Studio, selecione Arquivo > Abrir > Arquivo e navegue até o local do arquivo .diagsession e, em seguida, selecione e abra o arquivo.
Selecione o separador "Benchmarks" para visualizar os dados dos benchmarks do BenchmarkDotNet.
Para obter mais informações sobre os resultados na guia Benchmarks , consulte a documentação do BenchmarkDotNet .
Clique com o botão direito do mouse em uma linha nos resultados e escolha Selecionar intervalo de tempo para sincronizar o gráfico da linha do tempo com o benchmark.
Selecione uma das guias disponíveis, como Uso da CPU ou Alocações.
Dependendo do diagnosticador usado para coletar dados, você pode obter informações relacionadas à alocação de memória, uso da CPU, contadores e outros dados de desempenho. Para analisar alocações de memória, use o MemoryDiagnoser interno adicionando o atributo [MemoryDiagnoser]. Para obter mais informações, consulte Diagnosticadores.
Observação
O profiler suporta apenas o [MemoryDiagnoser] e os diagnosticadores listados anteriormente neste artigo.
Para obter um exemplo de como usar o criador de perfil para analisar alocações de memória, consulte a postagem de blog Benchmarking with Visual Studio Profiler.
Para analisar dados relacionados a outras guias, como Uso da CPU, consulte os artigos correspondentes na documentação de análise de desempenho.
Otimize com o Copilot
Você pode acionar otimizações de alocação de CPU e memória para seus benchmarks BenchmarkDotNet diretamente do editor usando o CodeLens. Isso torna o ajuste de desempenho mais acessível e perfeito, ajudando você a encontrar e corrigir problemas de alocação de CPU e memória exatamente onde você codifica.
Selecione o indicador CodeLens acima do seu benchmark e, em seguida, selecione a opção Otimizar alocações com o Copilot.