Mik*_*erk 20 c# collections performance dictionary
我正在查看Collection
MSDN中用于.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
需要拆箱并且没有通用类型的构造器.
我无法在任何地方找到关于HybridDictionary
vs 的性能的比较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
:)
归档时间: |
|
查看次数: |
11937 次 |
最近记录: |