Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Du kan använda profileringsverktygen för att samla in och visa BenchmarkDotNet-data i Visual Studio.
När du lägger till en BenchmarkDotNet-diagnostik i dina benchmark-klasser som ett attribut genereras en .diagsession-fil efter att benchmark-körningen har körts. Du kan sedan öppna .diagsession i Visual Studio och visa profileringsdata för testresultaten.
Följande diagnostiker stöds:
- CPUUsageDiagnoser
- Databasdiagnostiker
- DotNetCountersDiagnoser
- EventsDiagnoser
- FileIODiagnoser
Varje diagnostik genererar prestandadata som är relaterade till den diagnostiken. CpuUsageDiagnoser genererar till exempel en .diagsession-fil med CPU-data i och DatabaseDiagnoser genererar en .diagsession-fil med data om databasåtgärder. Begränsningar motsvarar det associerade profileringsverktyget. Profilerarens databasverktyg fungerar till exempel på ADO.NET eller Entity Framework Core.
Förutsättningar
Visual Studio 2022 version 17.9 eller senare
Ditt benchmark-projekt måste innehålla följande två NuGet-paket:
Om du använder Benchmark-projektmallen finns dessa NuGet-paket när du skapar projektet.
Skapa projektet
Benchmark-funktionerna måste läggas till i ett .NET-konsolprogram. Dessa funktioner kan vara omslutningsfunktioner som refererar till andra projekttyper.
Du kan antingen skapa ett konsolprojekt och lägga till BenchmarkDotNet-stöd manuellt eller använda benchmark-projektmallen . Vissa av stegen som beskrivs i den här artikeln krävs endast när du lägger till BenchmarkDotNet-stöd manuellt.
Benchmark Project-mallen genererar ett helt integrerat BenchmarkDotNet-projekt med inbyggt stöd för profilering av processoranvändning och Copilot-insikter. Om du vill använda mallen väljer du Profilering från listan med projekttyper när du skapar ett nytt projekt och väljer sedan Benchmark-projekt.
Skapa ett konsolprojekt.
Benchmark-funktionerna måste läggas till i ett .NET-konsolprogram. Dessa funktioner kan vara omslutningsfunktioner som refererar till andra projekttyper.
Samla in Benchmark.NET data
Ställ in bygget på en versionsversion i stället för en felsökningsversion.
Attribut din kod för diagnostiker och benchmarks, och inkludera kod för att köra benchmarks (
BenchmarkRunner.Run).Lägg till diagnostiknamnet som ett attribut till klassen som innehåller de riktmärken som du vill generera data för.
Du kan till exempel använda följande kod för CPUUsageDiagnoser.
Om du använder mallen Benchmark Project finns exempelkoden redan i mallen. Om du lägger till BenchmarkDotNet-stöd manuellt kan du använda följande exempelkod.
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); } } }Kör programmet för att generera .diagsession-filen .
Kontrollera konsolens utdata för att se platsen för filen. Till exempel:
// * Diagnostic Output - VSDiagnosticsDiagnoser * Collection result moved to 'BenchmarkDotNet_Md5VsSha256_20231218_123326.diagsession'. Session : {7f38bcc2-c692-4266-aa24-b12bc5325ea4} Stopped Exported diagsession file: *.diagsession
Visa BenchmarkDotNet–data
I Visual Studio väljer du Öppna > fil > och navigerar till platsen för .diagsession-filen och väljer sedan och öppnar filen.
Välj fliken Benchmarks för att visa data för BenchmarkDotNet-riktmärken.
Mer information om resultaten på fliken Benchmarks finns i Dokumentation om BenchmarkDotNet .
Högerklicka på en rad i resultatet och välj Välj tidsintervall för att synkronisera tidslinjediagrammet med riktmärket.
Välj någon av de tillgängliga flikarna, till exempel CPU-användning eller Allokeringar.
Beroende på vilken diagnostik du använde för att samla in data kan du få insikter om minnesallokering, CPU-användning, räknare och andra prestandadata. Om du vill analysera minnesallokeringar använder du den inbyggda MemoryDiagnoser genom att lägga till attributet [MemoryDiagnoser]. Mer information finns i Diagnoser.
Anmärkning
Profileraren stöder endast [MemoryDiagnoser] och diagnostikerna som anges tidigare i den här artikeln.
Ett exempel på hur du använder profileraren för att analysera minnesallokeringar finns i blogginlägget Benchmarking med Visual Studio-profileraren.
Information om hur du analyserar data som rör andra flikar, till exempel CPU-användning, finns i motsvarande artiklar i dokumentationen för profilering.