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切换到ListDictionary或HashTable当项目数量增加以优化其功能.为什么要使用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:)