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 |
合集:
BenchmarkDotNet
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?