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 @   崩坏的领航员  阅读(54)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示