可以使用分析工具在 Visual Studio 中收集和查看 BenchmarkDotNet 数据。
将 BenchmarkDotNet 诊断程序作为属性添加到基准类时,将在基准运行后生成 .diagsession 文件。 然后,可以在 Visual Studio 中打开 .diagsession 并查看基准的分析数据。
支持以下诊断程序:
- CPUUsageDiagnoser
- 数据库诊断器
- DotNetCountersDiagnoser
- EventsDiagnoser
- FileIODiagnoser
每个诊断程序都会生成与该诊断程序相关的性能数据。 例如,CPUUsageDiagnoser 生成一个 .diagsession 文件,其中包含 CPU 数据,DatabaseDiagnoser 生成一个 .diagsession 文件,其中包含数据库作上的数据。 这些限制对应于相关的分析工具。 例如,探查器的数据库工具适用于 ADO.NET 或 Entity Framework Core。
先决条件
Visual Studio 2022 版本 17.9 或更高版本
基准项目必须包含以下两个 NuGet 包:
如果使用基准项目模板,则创建项目时会存在这些 NuGet 包。
创建项目
必须将基准函数添加到 .NET 控制台应用程序。 这些函数可以是引用其他项目类型的包装函数。
可以创建控制台项目并手动添加 BenchmarkDotNet 支持,也可以使用 基准项目 模板。 仅当你手动添加 BenchmarkDotNet 支持时,才需要本文中所述的一些步骤。
基准项目模板生成完全集成的 BenchmarkDotNet 项目,其中包含对 CPU 使用情况分析和 Copilot 见解的内置支持。 若要使用模板,请在创建新项目时从项目类型列表中选择 “分析 ”,然后选择 “基准项目”。
创建控制台项目。
必须将基准函数添加到 .NET 控制台应用程序。 这些函数可以是引用其他项目类型的包装函数。
收集 Benchmark.NET 数据
将版本设置为发布版本,而不是调试版本。
为诊断器和基准设置代码属性,并包括用于运行基准的代码(
BenchmarkRunner.Run)。将诊断程序名称作为属性添加到包含要为其生成数据的基准的类。
例如,可以将以下代码用于 CPUUsageDiagnoser。
如果使用 基准项目 模板,则模板中已提供示例代码。 如果要手动添加 BenchmarkDotNet 支持,可以使用以下示例代码。
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 文件。
检查控制台输出以获取文件的位置。 例如:
// * Diagnostic Output - VSDiagnosticsDiagnoser * Collection result moved to 'BenchmarkDotNet_Md5VsSha256_20231218_123326.diagsession'. Session : {7f38bcc2-c692-4266-aa24-b12bc5325ea4} Stopped Exported diagsession file: *.diagsession
查看 BenchmarkDotNet 数据
在 Visual Studio 中,选择 “文件 > 打开 > 文件 ”并导航到 .diagsession 文件的位置,然后选择并打开该文件。
选择“ 基准” 选项卡以查看 BenchmarkDotNet 基准的数据。
有关 “基准” 选项卡中的结果的详细信息,请参阅 BenchmarkDotNet 文档。
右键单击结果中的行,然后选择 “选择时间范围 ”以将时间线图与基准同步。
选择可用选项卡之一,例如 CPU 使用率 或 分配。
根据用于收集数据的诊断程序,可以获得与内存分配、CPU 使用率、计数器和其他性能数据相关的见解。 若要分析内存分配,请通过添加 [MemoryDiagnoser] 属性来使用内置工具 MemoryDiagnoser。 有关详细信息,请参阅 诊断程序。
注释
性能分析器仅支持 [MemoryDiagnoser] 和本文前面列出的诊断工具。
有关使用探查器分析内存分配的示例,请参阅博客文章 “使用 Visual Studio Profiler 进行基准测试”。
若要分析与其他选项卡(如 CPU 使用情况)相关的数据,请参阅分析文档中的相应文章。