C# 比较dynamic和Dictionary性能
作者:网络转载 发布时间:[ 2015/3/12 13:52:52 ] 推荐标签:C# 软件开发 .NET 代码
开发中需要传递变参,考虑使用 dynamic 还是 Dictionary(准确地说是Dictionary<string,object>)。
dynamic 的编码体验显著优于 Dictionary,如果性能差距不大的话,我会选择使用dynamic。
搜索后没有找到类似对比数据,决定自行实验。
首先使用以下测试代码:
public void TestDynamic()
{
var e = CallDynamic(new { Value = 0 });
int v = e.Value;
}
public void TestDictionary()
{
var dict = new Dictionary<string, object>();
dict["Value"] = 0;
dict = CallDictionary(dict);
int v = (int)dict["Value"];
}
private dynamic CallDynamic(dynamic test)
{
int v = test.Value;
v++;
return new { Value = v };
}
private Dictionary<string, object> CallDictionary(
Dictionary<string, object> test)
{
int v = (int)test["Value"];
v++;
var dict = new Dictionary<string, object>();
dict["Value"] = v;
return dict;
}
分别比较运行 1次、10次、100次、1000次、1e4次、1e5次、1e6次 时间
结果:
其中dynamic列和dynamic2列的数据分别是:
在一次运行中执行一步测试 和 在一次运行中连续执行所有测试
分析测试过程和数据,得到以下结论:
1.dynamic首次使用会产生一定的性能损耗
2.无论是否首次使用,使用次数达到一定量级,dynamic性能一定优于Dictionary
3.一次运行中连续使用dynamic会显著拉低平均性能损耗
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11