Analysieren von BenchmarkDotNet-Daten in Visual Studio
Artikel
Sie können die Profilerstellungstools verwenden, um BenchmarkDotNet-Daten in Visual Studio zu erfassen und anzuzeigen.
Wenn Sie Ihren Benchmark-Klassen ein BenchmarkDotNet-Diagnosetool als Attribut hinzufügen, wird nach der Ausführung des Benchmarks eine .diagsession-Datei generiert. Anschließend können Sie die .diagsession in Visual Studio öffnen und Profilerstellungsdaten für die Benchmarks anzeigen.
Die folgenden Diagnoseinstrumente werden unterstützt:
CPUUsageDiagnoser
DatabaseDiagnoser
DotNetCountersDiagnoser
EventsDiagnoser
FileIODiagnoser
Jedes Diagnoseinstrument generiert Leistungsdaten im Zusammenhang mit dem jeweiligen Diagnoseinstrument. Beispielsweise erzeugt der CPUUsageDiagnoser eine .diagsession-Datei mit CPU-Daten, und der DatabaseDiagnoser erzeugt eine .diagsession-Datei mit Daten zu Datenbankoperationen. Einschränkungen entsprechen dem zugehörigen Profilerstellungstool. Das Datenbanktool des Profilers funktioniert beispielsweise auf ADO.NET oder Entity Framework Core.
Voraussetzungen
Visual Studio 2022, Version 17.9 oder höher
Ihr Benchmarkprojekt muss die folgenden zwei NuGet-Pakete enthalten:
Die Benchmark-Funktionen müssen einer .NET-Konsolenanwendung hinzugefügt werden. Bei diesen Funktionen kann es sich um Wrapperfunktionen handeln, die auf andere Projekttypen verweisen.
Setzen Sie Ihren Build auf einen Release-Build statt auf einen Debug-Build.
Attributieren Sie Ihren Code für Diagnoseinstrumente und Benchmarks, und fügen Sie Code zum Ausführen der Benchmarks (BenchmarkRunner.Run) hinzu.
Fügen Sie den Namen des Diagnoseinstruments als Attribut zu der Klasse hinzu, die die Benchmarks enthält, für die Sie Daten generieren möchten.
Sie können beispielsweise den folgenden Code für den CPUUsageDiagnoser verwenden.
C#
using System;
using System.Security.Cryptography;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
using Microsoft.VSDiagnostics;
namespaceMyBenchmarks
{
[CPUUsageDiagnoser]
publicclassMd5VsSha256
{
privateconstint N = 10000;
privatereadonlybyte[] data;
privatereadonly SHA256 sha256 = SHA256.Create();
privatereadonly MD5 md5 = MD5.Create();
publicMd5VsSha256()
{
data = newbyte[N];
new Random(42).NextBytes(data);
}
[Benchmark]
publicbyte[] Sha256() => sha256.ComputeHash(data);
[Benchmark]
publicbyte[] Md5() => md5.ComputeHash(data);
}
publicclassProgram
{
publicstaticvoidMain(string[] args)
{
var summary = BenchmarkRunner.Run(typeof(Program).Assembly);
}
}
}
Führen Sie die Anwendung aus, um die .diagsession-Datei zu generieren.
Überprüfen Sie die Konsolenausgabe, um den Speicherort der Datei zu ermitteln. Zum Beispiel:
Windows-Eingabeaufforderung
// * Diagnostic Output - VSDiagnosticsDiagnoser *
Collection result moved to 'BenchmarkDotNet_Md5VsSha256_20231218_123326.diagsession'.
Session : {7f38bcc2-c692-4266-aa24-b12bc5325ea4}
Stopped
Exported diagsession file: *.diagsession
Benchmark .NET-Daten anzeigen
Wählen Sie in Visual Studio die Option Datei > > Datei öffnen, navigieren Sie zum Speicherort der .diagsession-Datei, wählen Sie die Datei aus und öffnen Sie sie.
Wählen Sie die Registerkarte Benchmark aus, um BenchmarkDotNet-Daten anzuzeigen.
Weitere Informationen zu den Ergebnissen finden Sie in der BenchmarkDotNet-Dokumentation.
Erfahren Sie, wie Sie Ihre .NET-App mithilfe von Visual Studio effizient debuggen können, um Ihre Fehler schnell zu beheben. Analysieren und korrigieren Sie Ihre C#-Anwendungen mit dem interaktiven Debugger in Visual Studio.
Erfahren Sie mehr über die Methoden und Best Practices, die den geschäftlichen und technischen Anforderungen für die Modellierung, Visualisierung und Analyse von Daten mit Microsoft Power BI entsprechen.