- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在查看 .Net 框架的 MSDN 中的 Collection
类。我遇到了 HybridDictionary
,它指出 ( http://msdn.microsoft.com/en-us/library/system.collections.specialized.hybriddictionary.aspx ):
Implements IDictionary by using a ListDictionary while the collection is small, and then switching to a Hashtable when the collection gets large.
所以我想知道 ListDictionary
里面写着 ( http://msdn.microsoft.com/en-us/library/system.collections.specialized.listdictionary.aspx )
Recommended for collections that typically include fewer than 10 items.
现在这对我来说似乎是一个任意(项目)数量。我无法在文档中找到这背后的机制,我怀疑性能边界可能与许多项目有关,例如 2^N(2 的 N 次方)。
现在我经常使用 Dictionary
的集合类型,集合可能包含 10 到 30 个项目,50 个顶部,具体取决于“页面大小”。
但是 HybridDictionary
和 ListDictionary
需要拆箱并且没有通用类型构造函数。
我无法在任何地方找到关于 HybridDictionary
与 Dictionary
性能的比较。
那么什么时候真正使用这个 HybridDictionary
而不是其他 Dictonary 类型?
附言如果 HybridDictionary
在项目数量增加时切换到 ListDictionary
或 HashTable
以优化其功能。为什么要使用 ListDictionary
?如果软件中的某些要求发生变化,突然最多 20 个项目必须放入 ListDictionary
,而不是最大数量的 10 个项目,则代码必须重构为 HybridDictionary
保持性能?
最佳答案
When to use a HybridDictionary over other Dictionary types?
当您确定集合大小将少于 10 个项目时,您将使用 ListDictionary
。
HybridDictionary
与 Dictionary
几乎相同,但当集合大小小于 10 时将利用 ListDictionary
的性能项目。一旦集合增长到 10 以上,HybridDictionary
将从内部使用 ListDictionary
切换到像普通 Dictionary
一样使用 HashTable
.
因此,何时使用一个,如果您的收藏通常少于 10 个项目,但有时会变得更大,那么 HybridDictionary
将是您要使用的那个。
例如,我们在移动设备应用程序通信层中使用 HybridDictionary
,通信消息队列几乎总是低于 10 个项目,但如果后端服务器中断,通信消息将构建根据服务器停机时间的长短,达到 100 或 1000,在这种情况下 ListDictionary
会很糟糕,在那种情况下 HybridDictionary
将切换到 HashTable
以保持性能,并在低于 10 时仍能为我们提供最佳性能。
所以它用在专门的地方,因此它属于 System.Collections.Specialized
的命名空间 :)
关于c# - 何时使用 HybridDictionary 而不是其他 Dictionary 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18779433/
显然 there is no generic version of a HybridDictionary . 为什么是这样?当您需要将项目存储在字典中时,我一直认为这是最佳实践,但不知道其中将有多少项
我写了下面的代码 HybridDictionary state = new HybridDictionary(); using (MemoryStream buffer = new MemoryStr
我正在使用 ResourceReader 读取嵌入式 resx 资源,我想将其存储在类级别的成员变量中。我想将它存储为 HybridDictionary,但没有找到一种简单的方法。 类(class)成
当 OrderedDictionary、ListDictionary 和 HybridDictionary 这三种不同的字典都执行相似的功能时,它们需要什么? 它们都不是排序的,集合中的元素都可以通过
我正在查看 .Net 框架的 MSDN 中的 Collection 类。我遇到了 HybridDictionary,它指出 ( http://msdn.microsoft.com/en-us/libr
我是一名优秀的程序员,十分优秀!