闽公网安备 35020302035485号
[MemoryDiagnoser]//记录内存分配情况
[MarkdownExporter, AsciiDocExporter, HtmlExporter, CsvExporter, RPlotExporter]
public class ParamsBenchmark
{
private List<int> dataList = new();
/// <summary>
/// 堆代码 duidaima.com
/// 初始化测试数据
/// 如创建大型数据集、分配内存资源等,避免在每次基准测试迭代中重复初始化带来的性能干扰
/// </summary>
[GlobalSetup]
public void Setup()
{
dataList = new List<int> { 1, 2, 3, 4, 5, 6, 7, 9, 10, 22, 55, 66, 88, 44, 66, 33, 77, 54, 24, 8789, 24, 54, 244, 377, 26, 99, 888, 1000 };
}
[Benchmark]
public int CalculateOldSum()
{
return OldSumArray(dataList.ToArray());
}
[Benchmark]
public int CalculateNewSumList()
{
return NewSumList(dataList);
}
/// <summary>
/// C# 13 之前
/// </summary>
/// <param name="datas">datas</param>
/// <returns></returns>
public int OldSumArray(params int[] datas)
{
return datas.Sum();
}
/// <summary>
/// C# 13 中
/// </summary>
/// <param name="datas">datas</param>
/// <returns></returns>
public int NewSumList(params List<int> datas)
{
return datas.Sum();
}
}
基准测试报告
Allocated: 每次操作分配的内存(仅托管内存,包含所有内容,1KB = 1024B)。
综上所述C# 13 中的 params 集合变得类型更灵活,满足更复杂的应用场景,并且性能得到了进一步的提升。