C# Dictionary跟Hashtable的对比

llovebo

共 1099字,需浏览 3分钟

 · 2022-01-23

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


右下角,您点一下在看图片0cd0816b05e0717a4fa534c2d8cdc705.webp

小微工资涨1毛

商务合作QQ:185601686


浏览 58
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报