BenchmarkDotNet-显示内存

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

// 由于现在需要展示内存方面的指标, 原来的字符串判空由于使用内存较少, 不适合用来做测试
// 因此定义了以下拥有相同属性的结构体和类
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]特性, 最终生成的表格中就会出现内存方面的数据

Method Runtime Mean Error StdDev Ratio RatioSD Gen0 Allocated Alloc Ratio
TestStruct .NET 6.0 3.284 us 0.0831 us 0.0549 us 1.00 0.00 11.8054 24.2 KB 1.00
TestClass .NET 6.0 7.945 us 0.2639 us 0.1380 us 2.43 0.07 23.2011 47.46 KB 1.96
TestStruct .NET 7.0 3.227 us 0.0690 us 0.0457 us 0.98 0.02 11.7973 24.2 KB 1.00
TestClass .NET 7.0 7.100 us 0.6302 us 0.4168 us 2.16 0.11 23.2008 47.46 KB 1.96
posted @ 2023-10-09 17:26  崩坏的领航员  阅读(31)  评论(0编辑  收藏  举报