何时使用HybridDictionary而不是其他Dictionary类型?

Mik*_*erk 20 c# collections performance dictionary

我正在查看CollectionMSDN中用于.Net框架的类.我遇到了HybridDictionary它(http://msdn.microsoft.com/en-us/library/system.collections.specialized.hybriddictionary.aspx):

在集合较小时使用ListDictionary实现IDictionary,然后在集合变大时切换到Hashtable.

所以我想知道ListDictionary哪些州(http://msdn.microsoft.com/en-us/library/system.collections.specialized.listdictionary.aspx)

建议用于通常包含少于10个项目的集合.

现在,这对我来说似乎是一个任意数量的项目.我在文档中找不到这背后的机制是什么,我怀疑性能的边界会与一些项目有关,比如2 ^ N(2到N的幂).

现在我Dictionary经常使用集合类型,集合可能包含10到30个项目,50个顶部,具体取决于"页面大小".

但是HybridDictionary并且ListDictionary需要拆箱并且没有通用类型的构造器.

我无法在任何地方找到关于HybridDictionaryvs 的性能的比较Dictionary.

那么什么时候实际使用它HybridDictionary比其他Dictonary类型?

PS并且如果HybridDictionary切换到ListDictionaryHashTable当项目数量增加以优化其功能.为什么要使用ListDictionary?如果软件中的某些要求发生变化,并且突然最多必须放入20个项目ListDictionary,而不是最多10个项目,则必须重新考虑代码HybridDictionary以保持性能?

sa_*_*213 33

何时使用HybridDictionary而不是其他Dictionary类型?

您可以使用ListDictionary当您确定收集大小将少于10个项目时.

HybridDictionary几乎是一样的Dictionary,但将采取的性能优势,ListDictionary当集合大小是小于10项.一旦集合增长到10以上,HybridDictionary将从ListDictionary内部使用切换到使用HashTable普通的Dictionary.

因此,何时使用,如果您的收藏通常不超过10件,但有时可能会变大,那么HybridDictionary将是一个使用.

例如,我们HybridDictionary在移动设备应用程序中使用通信层,通信消息队列几乎总是不到10项,但如果有后端服务器中断,则通信消息将累积到100或1000,具体取决于多长时间服务器已关闭,ListDictionary在这种情况下会很糟糕,并且在这种情况下HybridDictionary将切换到a HashTable以保持性能提升,并且当它低于10时仍然可以提供最大性能.

所以它在专门的地方使用,因此它所属的命名空间System.Collections.Specialized:)