用于并行搜索的最快的.net数据结构

时间:2011-10-10 11:02:14

标签: .net performance collections parallel-processing

假设我们有一个很大的只读(int,string)元素列表。

从该列表中获取项目的最快方法是什么?

我知道通用字典很快,但据我所知它只使用1个cpu,而今天的计算机至少有2个cpu。

作为一个附带问题:在多个项目中搜索此集合的最快解决方案是什么?例如collection.GetItems(new int [] {1,2,3,4}),其中1,2,3,4是键。

谢谢!

1 个答案:

答案 0 :(得分:2)

字典使用哈希表,它应该转移到O(1)。计算密钥上的散列应该非常快,并且散列查找是直接的数组内存偏移,并且希望在非常短的碰撞链中行走。

因此,我不建议优化查找,除非字典不能满足您的需求,而且速度太慢。您可能会争辩说有一个处理器会浪费但是试图利用该处理器来优化可能不存在的问题会使您的代码变得复杂。

我建议维护查找字典和每次查找。

唯一的考虑因素是记忆。字典将添加内存占用以使查找快速 - 典型的空间与时间。

如果你需要保持低内存并且你需要更快的查找并且你有更多的处理能力(多核),那么也许。

在这种情况下,我建议您查看任务并行库。这是一篇文章:http://www.codeproject.com/KB/cs/TPL1.aspx

相关问题