Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Você pode usar as ferramentas de criação de perfil para coletar e exibir dados BenchmarkDotNet no Visual Studio.
Quando você adiciona um diagnosticador BenchmarkDotNet às classes de parâmetro de comparação como um atributo, um arquivo .diagsession é gerado após a execução do parâmetro de comparação. Em seguida, você pode abrir a .diagsession no Visual Studio e exibir dados de criação de perfil para os parâmetros de comparação.
Há suporte para os seguintes diagnósticos:
- CPUUsageDiagnoser
- DatabaseDiagnoser
- DotNetCountersDiagnoser
- EventsDiagnoser
- FileIODiagnoser
Cada diagnosticador gera dados de desempenho relacionados a esse diagnosticador. Por exemplo, o CPUUsageDiagnoser gera um arquivo .diagsession com dados de CPU e o DatabaseDiagnoser gera um arquivo .diagsession com dados em operações de banco de dados. As limitações correspondem à ferramenta de criação de perfil associada. Por exemplo, a ferramenta Banco de Dados do criador de perfil funciona no ADO.NET ou no Entity Framework Core.
Pré-requisitos
Visual Studio 2022 versão 17.9 ou posterior
Seu projeto de parâmetro de comparação deve incluir os dois pacotes NuGet a seguir:
Coletar dados de Benchmark.NET
Crie um projeto de console.
As funções de parâmetro de comparação devem ser adicionadas a um aplicativo de console do .NET. Essas funções podem ser funções wrapper que fazem referência a outros tipos de projeto.
Defina o build para um build de versão em vez de um build de depuração.
Atribua seu código para diagnósticos e parâmetros de comparação e inclua código para executar os parâmetros de comparação (
BenchmarkRunner.Run
).Adicione o nome do diagnosticador como um atributo à classe que contém os parâmetros de comparação para os quais você deseja gerar dados.
Por exemplo, você pode usar o código a seguir para o CPUUsageDiagnoser.
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); } } }
Execute o aplicativo para gerar o arquivo .diagsession .
Verifique a saída do console para obter o local 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: *.diagsession
Exibir dados do BenchmarkDotNet
No Visual Studio, selecione Arquivo > Aberto > e navegue até o local do arquivo .diagsession e selecione e abra o arquivo.
Selecione a guia Parâmetros de Comparação para exibir dados para os parâmetros de comparação 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 grafo da linha do tempo com o parâmetro de comparação.
Selecione uma das guias disponíveis, como Uso da CPU ou Alocações.
Dependendo do diagnosticador usado para coletar dados, você pode obter insights relacionados à alocação de memória, ao uso da CPU, aos contadores e a 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 Diagnosticers.
Observação
O criador de perfil dá suporte apenas ao [MemoryDiagnoser] e aos 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 com o Visual Studio Profiler.
Para analisar dados relacionados a outras guias, como uso da CPU, consulte os artigos correspondentes na documentação de criação de perfil.