Visual Studio'da BenchmarkDotNet verilerini analiz etme

Visual Studio'da BenchmarkDotNet verilerini toplamak ve görüntülemek için profil oluşturma araçlarını kullanabilirsiniz.

Karşılaştırma sınıflarınıza bir benchmarkDotNet tanılayıcısı öznitelik olarak eklediğinizde, karşılaştırma çalıştırıldıktan sonra bir .diagsession dosyası oluşturulur. Ardından Visual Studio'da .diagsession dosyasını açabilir ve karşılaştırmalar için profil oluşturma verilerini görüntüleyebilirsiniz.

Aşağıdaki tanılayıcılar desteklenir:

  • CPUUsageDiagnoser
  • DatabaseDiagnoser
  • DotNetCountersDiagnoser
  • EventsDiagnoser
  • FileIODiagnoser

Her tanılayıcı, bu tanılayıcıyla ilgili performans verileri oluşturur. Örneğin, CPUUsageDiagnoser içinde CPU verileri olan bir .diagsession dosyası oluşturur ve DatabaseDiagnoser veritabanı işlemleriyle ilgili verileri içeren bir .diagsession dosyası oluşturur. Sınırlamalar ilişkili profil oluşturma aracına karşılık gelir. Örneğin, profil oluşturucunun Veritabanı aracı ADO.NET veya Entity Framework Core üzerinde çalışır.

Önkoşullar

Benchmark.NET verileri toplama

  1. Konsol projesi oluşturma.

    Karşılaştırma işlevleri bir .NET konsol uygulamasına eklenmelidir. Bu işlevler, diğer proje türlerine başvuran sarmalayıcı işlevleri olabilir.

  2. Derlemenizi Hata Ayıklama derlemesi yerine Bir Yayın derlemesine ayarlayın.

  3. Kodunuzu tanılayıcılar ve karşılaştırmalar için ilişkilendirin ve karşılaştırmaları (BenchmarkRunner.Run) çalıştırmak için kod ekleyin.

    Tanılamacı adını, veri oluşturmak istediğiniz karşılaştırmaları içeren sınıfa öznitelik olarak ekleyin.

    Örneğin, CPUUsageDiagnoser için aşağıdaki kodu kullanabilirsiniz.

    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);
            }
        }
    }
    
  4. .diagsession dosyasını oluşturmak için uygulamayı çalıştırın.

    Dosyanın konumunu almak için konsol çıkışını denetleyin. Örneğin:

    // * Diagnostic Output - VSDiagnosticsDiagnoser * 
    Collection result moved to 'BenchmarkDotNet_Md5VsSha256_20231218_123326.diagsession'.
    Session : {7f38bcc2-c692-4266-aa24-b12bc5325ea4}
      Stopped
    Exported diagsession file: *.diagsession
    

Karşılaştırma .NET verilerini görüntüleme

  1. Visual Studio'da Dosya Aç > Dosyasını > seçin ve .diagsession dosyasının konumuna gidin ve dosyayı seçip açın.

  2. BenchmarkDotNet verilerini görüntülemek için Kıyaslama sekmesini seçin.

    Visual Studio'da BenchmarkDotNet verilerinin ekran görüntüsü.

Sonuçlar hakkında daha fazla bilgi için BenchmarkDotNet belgelerine bakın.