安装NuGet包
Install-Package BenchmarkDotNet
注意:项目的启动方式要设置成Release,直接运行不调试
基本测试
编写测试方法
编写两个方法,用 += 和 StringBuilder 分别测试字符串拼接性能
public class TestClass
{
[Benchmark]//标注此特性代表参与性能测试
public void TestString()
{
string str = string.Empty;
for (int i = 0; i < 1000; i++)
{
str += i;
}
}
[Benchmark]
public void TestStringBuilder()
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++)
{
sb.Append(i);
}
string str = sb.ToString();
}
}
调用测试
var summary = BenchmarkRunner.Run<TestClass>(ManualConfig.Create(DefaultConfig.Instance).WithOptions(ConfigOptions.DisableOptimizationsValidator));
测试结果
内存分配测试和性能排序
修改测试类
[MemoryDiagnoser] 特性:测试内存分配,GC
[RankColumn]特性:性能排序
测试结果
测试结果说明
参数 | 说明 |
---|---|
Mean | 所有测量值的算术平均值 |
Error | 99.9%置信区间的一半 |
StdDev | 所有测量的标准偏差 |
Median | 将所有测量结果的上半部分分开的值(第50个百分位数) |
Rank | 当前基准均值在所有基准中的相对位置(阿拉伯风格) |
Gen 0 | GC第0代每1000次操作收集一次 |
Gen 1 | GC第1代每1000次操作收集一次 |
Gen 2 | GC第2代每1000次操作收集一次 |
Allocated | 每个单个操作的分配内存(仅受管理的(包括),1KB = 1024B) |
单位"us"是"μs"或微秒的缩写,1000微秒等于1毫秒。
评论区