当给定一个静态对象集(静态的,一旦加载后就很少加载,则是静态的),需要在其中进行重复并发查找以达到最佳性能,哪个更好,HashMap还是使用一些自定义比较器进行二进制搜索的数组?
HashMap
答案是对象还是结构类型的函数?哈希和/或相等函数性能?哈希唯一性?清单大小? Hashset尺寸/布景尺寸?
Hashset
我正在查看的布景大小可能在500k到10m之间,以防信息有用。
当我在寻找C#答案时,我认为真正的数学答案不在于语言,因此我不包含该标记。但是,如果有C#特定的事情要注意,则需要该信息。
好吧,我会尽量简短。
C#简短答案:
测试两种不同的方法。
.NET为您提供了通过一行代码来更改方法的工具。否则,请使用System.Collections.Generic.Dictionary,并确保将其初始化为大容量作为初始容量,否则由于GC必须执行收集旧存储区阵列的工作,因此您将在余生中插入项目。
更长的答案:
哈希表具有ALMOST恒定的查找时间,并且在现实世界中访问哈希表中的项目并不仅仅需要计算哈希。
要获得某项,您的哈希表将执行以下操作:
查找时间取决于散列函数的“良好”程度(输出的稀疏程度)和快速程度,所使用的存储桶数以及键比较器的速度如何,这并不总是最佳的解决方案。
更好更深入的解释:http : //en.wikipedia.org/wiki/Hash_table