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
Visual Studio 2022 sürüm 17.9 veya üzeri
Karşılaştırma projeniz aşağıdaki iki NuGet paketini içermelidir:
Benchmark.NET verileri toplama
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.
Derlemenizi Hata Ayıklama derlemesi yerine Bir Yayın derlemesine ayarlayın.
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); } } }
.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
Visual Studio'da Dosya Aç > Dosyasını > seçin ve .diagsession dosyasının konumuna gidin ve dosyayı seçip açın.
BenchmarkDotNet verilerini görüntülemek için Kıyaslama sekmesini seçin.
Sonuçlar hakkında daha fazla bilgi için BenchmarkDotNet belgelerine bakın.