.NET HashTable Vs Dictionary - Can the Dictionary be as fast?
我试图弄清楚什么时候和为什么要使用字典或哈希表。我在这里做了一些搜索,发现人们谈论字典的一般优势,我完全同意,这将导致拳击和拆箱优势,获得轻微的性能提升。
但是我也读过字典,不会总是按照插入的顺序返回对象,它是按顺序排序的。像哈希表一样。据我所知,这会导致哈希表在某些情况下更快。
我的问题是,这些情况可能是什么?我刚才的假设是错的吗?你会用什么情况来选择一个在另一个上面,(是的,最后一个有点模棱两可)。
两个级别都有一个表数据结构国际。他们没有保护项目的秩序。
离开拳击/不拳击问题aside,大部分时间,他们的表现应该非常相似。
它们之间的基本结构差异在于:
如果你的目标是净框架2.0+,那么使用EDOCX1的好处就很小。事实上,它已经过时了。
我想这对你来说不算什么但只是为了让人们停止
Performance test-sortedlist vs.Voreddictionary vs.Dictionary vs.Hashtable
哈什特布尔与字典的区别
字典:
- 如果我们试图找到不存在的钥匙,字典返回错误。
- 字典快捷,比一个硬汉快,因为那里没有拳击和拳击。
- 词典是一种通用的类型,我们可以使用它的任何数据类型。
Hashtable:
- 如果我们试图找到不存在的钥匙
- 比字典慢,因为它需要拳击和拳击。
- Hashtable is not a generic type,
另一个重要的区别是,在同一时间,黑客类型的介质锁定多个阅读器和一个单一的作者,而字典不存在。
MSDN Article:"The
Dictionary class has the same
functionality as theHashtable class. ADictionary
of a specific type (other thanObject ) has better performance than a
Hashtable for value types because the elements ofHashtable are of
typeObject and, therefore, boxing and unboxing typically occur if
storing or retrieving a value type".
Link:http://msdn.microsoft.com/en-us/library/4yh14awz(V=vs.90)。
两个都是同一个班(你可以看分组)。Hashtable was created first before.Net had generics.字典,不过是一个普通的类别,给你强大的效益。自从你花钱买字典以来,我就永远不会用。
另一个重要的区别是,安全受到威胁。在多重阅读器/单一作者(MR/SW)中建立了安全的威胁,这意味着
To elaborate further:
BLCK1/
词典的优势在于它是一种通用类型,使它安全,并由于缺少拳击需要而加速。The following comparison table(constructed using the answers found in a similar so question post)inclusates some of the other reasons that support dictionaries over hash tables(or反之亦然)。
如果你在乎的是,总是把对象按顺序归还,它们被插入字典中,你可能会有一个眼神
可通过一个INTEGER索引(以添加项目的顺序排列)查询有序值各种项目是自动的
词典的速度快于黑暗,因为词典是一种通用的强大类型。可存储的是缓慢的,因为它以对象为数据类型,指导拳击和不拳击。