跳到主要内容

显示内存

在基准测试中, 除了运行耗时之外, 使用内存也是一项比较重要的指标, 下面介绍一下如何在最终的结果中展示内存方面的使用情况

// 由于现在需要展示内存方面的指标, 原来的字符串判空由于使用内存较少, 不适合用来做测试
// 因此定义了以下拥有相同属性的结构体和类
public struct SModel
{
public int Prop1 { get; set; }
public int Prop2 { get; set; }
public int Prop3 { get; set; }
}
public class CModel
{
public int Prop1 { get; set; }
public int Prop2 { get; set; }
public int Prop3 { get; set; }
}
[SimpleJob(RuntimeMoniker.Net70)]
[SimpleJob(RuntimeMoniker.Net60, baseline: true)]
[MemoryDiagnoser]
public class Test
{
public int Count = 1000;
[Benchmark(Baseline = true)]
public void TestStruct()
{
var data = new List<SModel>();
for (var i = 0; i < Count; i++)
data.Add(new SModel());
}
[Benchmark]
public void TestClass()
{
var data = new List<CModel>();
for (var i = 0; i < Count; i++)
data.Add(new CModel());
}
}

Test类打上[MemoryDiagnoser]特性, 最终生成的表格中就会出现内存方面的数据

MethodRuntimeMeanErrorStdDevRatioRatioSDGen0AllocatedAlloc Ratio
TestStruct.NET 6.03.284 us0.0831 us0.0549 us1.000.0011.805424.2 KB1.00
TestClass.NET 6.07.945 us0.2639 us0.1380 us2.430.0723.201147.46 KB1.96
TestStruct.NET 7.03.227 us0.0690 us0.0457 us0.980.0211.797324.2 KB1.00
TestClass.NET 7.07.100 us0.6302 us0.4168 us2.160.1123.200847.46 KB1.96