树和字典的合理大小

时间:2009-06-29 10:38:17

标签: c# dictionary tree size

我目前正在实施一个非常复杂的树结构,以允许近乎即时的数据访问,而不是对每个请求进行重新处理。

我只是想知道是否存在理论上或实际上,树的大小变得太大的限制,或者字典变得过于碰撞而无法正确/快速运行的点?

一般的答案将不胜感激,但C#特定的信息会好得多!

3 个答案:

答案 0 :(得分:2)

在.NET中,树或字典中的最大值为2 ^ 31 - 1(并且开销可能会少一些)。

实际上,在此之前很久你就会耗尽内存!

如果树保持平衡,那么搜索将保持大约。 O(log N)。

字典对所使用的基础算法更敏感,例如,有许多具有不同特征的散列方案。

答案 1 :(得分:1)

取决于您认为的大量金额。数百或数千应该没问题,但数百万可能值得寻找专门的东西。

随着您的成长,树会变慢,具体取决于您的存储技术和重新平衡。

字典应该相当一致,但要确保使用适合您可能存储的数据量的大小来构建它(可能x2是安全的)。

答案 2 :(得分:1)

this question - 这是我在So上回答的第一个:)

问题在于构建一个包含大约900,000个项目的字典的性能很慢。我把时间从10分多钟缩短到0.34秒。

经验教训是,字典只能与你的哈希函数一样好,如果你能快速生成一个独特的哈希值,它就像闪电般运行。

希望这有帮助,

修改

比较类并不重要,.net字符串具有非常强大的哈希函数,因此 - 在字典中具有出色的性能。如果他一直在使用单个字符串而不是成对字符串,那么这个问题就会“消失”。