C# Dictionary跟Hashtable的对比
c#里不支持动态对象, 无法像AS3一样定义一个动态的对象, 添加动态的属性。
例如像AS3里 要传递一系列参数, 临时对象的话,通常会用
var o:Object = {id:"1",name:"aaa"};
在c#里,字典系统的构建之前已经试用了Dictionary来充当参数的临时载体, 但是看了itween的插件后, 使用的是Hashtable来充当。
于是对 Dictionary 跟 Hashtable 2者进行了实验。时间以ms为单位。
对比1:构建对象。
循环100k次,每次循环分别以Dictionary,Hashtable构建一个临时对象。
3个参数:180:210
6个参数:219:302
9个参数:252:366
小结:构建Dictionary比Hashtable会稍微快一些, 但是Dictionary是string类型, 真实情况中如果需要转类型, 消耗时间可能会比Hashtable更高。
对比2:遍历对象。
循环100k次, 遍历所有属性。
以6个参数为条件:Dictionary耗时74, Hashtable耗时200.
小结:遍历Dictionary比Hashtable快不少, 而且Hashtable遍历时是object类型,如果是使用在语言包参数里, 还要考虑转为字符串的消耗。
对比3:查找。
2者都是平均是7~10ms 相差无几。
总结:
Dictionary虽然内部实现也是HashTable 但是运行中Dictionary效率还是更高一些。项目运行中效率应该不会相差很大。
Dictionary适合用于语言包的配置, 因为它的类型是确定的, 不需要再转一次, 效率也比Hashtable高。
Hashtable的key value都是object, 如果是用来做字典系统时充当临时对象比较合适,但是也必须是二进制反序列化为对象时,如果是解析CSV等文本时还是试用Dictionary比较好。
出处:https://www.cnblogs.com/reuyui/p/4033259.html
版权申明:本文来源于网友收集或网友投稿,仅供学习交流之用,如果有侵权,请转告版主或者留言,本公众号立即删除。
支持小微:
腾讯云 新年活动!玩服务器的可以搞搞,老客户也可以参加!
轻量服务器 2核4G8M80G 222元/3年
爆款1核2G云服务器首年38元
链接:https://curl.qcloud.com/bR8ycXZa
右下角,您点一下在看图片
小微工资涨1毛
商务合作QQ:185601686