Repolode
dotnet

dotnet/BenchmarkDotNet

面向 .NET 的基准测试库,可将 C# 方法转换为可复现的性能测试并自动生成统计报告。

Star
11,526
Fork
1,080
未关闭 Issue
168
最近提交
16小时前

这是什么?

BenchmarkDotNet 通过给方法加上特性(Attribute)即可将其转换为基准测试,写法与单元测试相似。库内部会自动完成预热、试运行、迭代测量以及防止死代码被优化等容易出错的步骤,并在检测到调试器挂载、DEBUG 编译或虚拟机环境时给出警告。

基准测试可以用 [Params] 进行参数化,也可以指定基线方法进行对比,并能在 .NET Framework、.NET Core、.NET 5+、Mono 和 NativeAOT 等多种运行时上执行。结果会以包含 Mean、Error、StdDev 等统计量的汇总表输出,并可导出为 Markdown、HTML、CSV、XML、JSON 格式或图表,同时支持内存分析和反汇编查看。

该库支持 Windows、Linux 和 macOS,适用于 C#、F# 和 Visual Basic 项目。

核心功能

  • 01通过 [Benchmark]、[Params] 等特性将方法快速转换为基准测试。
  • 02自动完成试运行、预热和迭代次数的确定,依据统计指标调整。
  • 03支持以基线方法对比,并在多个 .NET 运行时上执行。
  • 04可将结果导出为 Markdown、HTML、CSV、JSON 格式或图表。
  • 05支持托管与原生内存分析以及反汇编输出。

适用场景

  • 验证对 .NET 服务热点代码的修改是否真正提升了性能。
  • 比较不同算法或库 API(如哈希函数)在多种运行时上的表现。
  • 检查跨 .NET 版本或 NativeAOT 构建的性能回归。
  • 以标准报告格式与团队分享可复现的性能实验结果。

快速上手

  1. 1

    创建一个 .NET 控制台应用并添加 BenchmarkDotNet NuGet 包

  2. 2

    在类中为方法标注 [Benchmark],并从控制台应用的入口运行基准测试

使用前须知

  • 基准测试必须在控制台应用中运行,不支持其他类型的应用程序。
  • BenchmarkDotNet 不能替代良好的基准设计知识,结果仍需谨慎解读。

标签

常见问题

BenchmarkDotNet 是什么?
面向 .NET 的基准测试库,可将 C# 方法转换为可复现的性能测试并自动生成统计报告。 BenchmarkDotNet 通过给方法加上特性(Attribute)即可将其转换为基准测试,写法与单元测试相似。库内部会自动完成预热、试运行、迭代测量以及防止死代码被优化等容易出错的步骤,并在检测到调试器挂载、DEBUG 编译或虚拟机环境时给出警告。
BenchmarkDotNet 可以免费使用吗?用的什么许可证?
BenchmarkDotNet 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
BenchmarkDotNet 还在维护吗?
活跃维护中。BenchmarkDotNet 最近一次提交是在 2026年11月6日。
BenchmarkDotNet 适合用来做什么?
验证对 .NET 服务热点代码的修改是否真正提升了性能。 比较不同算法或库 API(如哈希函数)在多种运行时上的表现。 检查跨 .NET 版本或 NativeAOT 构建的性能回归。 以标准报告格式与团队分享可复现的性能实验结果。
BenchmarkDotNet 怎么安装和运行?
创建一个 .NET 控制台应用并添加 BenchmarkDotNet NuGet 包 在类中为方法标注 [Benchmark],并从控制台应用的入口运行基准测试
在哪里获取 BenchmarkDotNet?
源代码和安装说明在 GitHub 上:https://github.com/dotnet/BenchmarkDotNet

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目