是否有任何IDictionary <k,v>的实现具有更好的BCL性能?</k,v>

时间:2008-12-10 17:06:09

标签: c# .net dictionary hashtable

我正在寻找IDictionary的实现,并且具有更好的标准BCL性能。

我正在寻找具有恒定查找时间的东西,它可以很好地处理大量元素(> 10K)并且更加GC友好。

Ps:不,我不能自己写一个:)

3 个答案:

答案 0 :(得分:7)

BCL词典已经以摊销的常数时间执行,可以轻松处理10K元素。

你说它应该是“更加GC友好” - 你当前的版本有什么困扰?

您是否经常向字典中添加元素?如果是这样,请使用较大的初始容量创建它以避免流失。

答案 1 :(得分:2)

我无法对实施进行基准测试,但哥本哈根大学提供了另一种 - 更全面 - 的通用集合类选择:

http://www.itu.dk/research/c5/

它们提供了许多通用的Dictionary实现,它们具有不同的后备解决方案(Trees,HashTables等)。可能其中一个适合您的需求。性能是该类库开发的主要因素。

当然,我建议您首先尝试BCL通用词典类,因为它可以节省您的时间并且可以很好地满足您的性能要求。

答案 2 :(得分:2)

我认为你很难找到一个比BCL更快的托管字典。我试图写一个,我很快发现它与你在平衡读/写性能时的速度一样快。