用BenchmarkDotNet给C#程序做性能测试
BenchmarkDotNet是一个用MIT协议开源的C#程序性能测试的一个库,非常简单易用。
用法
- 安装NuGet包,BenchmarkDotNet
- 在需要做性能测试的方法前加上属性
[Benchmark]
。 - 在Main函数调用性能测试
var summary = BenchmarkRunner.Run<Md5VsSha256>();
。
工作原理
- BenchmarkDotNet为每一个要做性能测试的方法生成了一个单独的项目,放在程序的输出目录下,用Release模式编译,并且运行多次来统计性能测试结果。
- 每次运行都包含以下几个步骤。
- Pilot: 决定运行几次。
- IdleWarmup, IdleTarget:评估BenchmarkDotNet这个工具带来的额外开销。
- MainWarmup:测试热身。
- MainTarget:测试。
- Result:测试结果减去BenchmarkDotNet带来的额外开销。
- 生成测试报告。有各种格式,包括html格式,markdown格式(缺省风格,github风格,stackoverflow风格),txt格式,csv格式。比如如下就是我运行示例代码后得到的github风格的输出。
1 | BenchmarkDotNet=v0.9.2.0 |
Method | Median | StdDev | |
---|---|---|---|
Md5 | 21.8816 us | 0.6091 us | |
Sha256 | 123.4171 us | 6.7846 us |
可以在程序的输出目录下的log文件中看到上面所说的每个过程的详细信息。
其他配置
BenchmarkDotNet还有很多可以配置的地方,可以参见主页的介绍。