面向 AI 编程助手的 .NET 10-11 性能调优技巧合集,主要针对基准测试场景。
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
创建一个 .NET 控制台应用并添加 BenchmarkDotNet NuGet 包
- 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 数据每日更新。
相关项目
逐行分析 Python 函数耗时的性能剖析工具,可定位函数中每一行代码的执行时间。
一个 pytest 插件,提供 benchmark fixture,用于在测试中对 Python 函数进行计时基准测试。
一款 Rust 性能分析工具,可定位 CPU、内存、异步、SQL、HTTP 和 I/O 瓶颈,并支持导出到 Prometheus 与 Grafana。
一款 Python 基准测试工具,可跟踪软件包随版本演进的性能,并生成静态网页报告。
免费的 Windows 性能分析工具,用于定位 CPU 和内存相关的性能问题,并对 .NET 运行时代码提供专门支持。