我目前正在实施一个非常复杂的树结构,以允许近乎即时的数据访问,而不是对每个请求进行重新处理。
我只是想知道是否存在理论上或实际上,树的大小变得太大的限制,或者字典变得过于碰撞而无法正确/快速运行的点?
一般的答案将不胜感激,但C#特定的信息会好得多!
答案 0 :(得分:2)
在.NET中,树或字典中的最大值为2 ^ 31 - 1(并且开销可能会少一些)。
实际上,在此之前很久你就会耗尽内存!
如果树保持平衡,那么搜索将保持大约。 O(log N)。
字典对所使用的基础算法更敏感,例如,有许多具有不同特征的散列方案。
答案 1 :(得分:1)
取决于您认为的大量金额。数百或数千应该没问题,但数百万可能值得寻找专门的东西。
随着您的成长,树会变慢,具体取决于您的存储技术和重新平衡。
字典应该相当一致,但要确保使用适合您可能存储的数据量的大小来构建它(可能x2是安全的)。
答案 2 :(得分:1)
见this question - 这是我在So上回答的第一个:)
问题在于构建一个包含大约900,000个项目的字典的性能很慢。我把时间从10分多钟缩短到0.34秒。
经验教训是,字典只能与你的哈希函数一样好,如果你能快速生成一个独特的哈希值,它就像闪电般运行。
希望这有帮助,
修改强>
比较类并不重要,.net字符串具有非常强大的哈希函数,因此 - 在字典中具有出色的性能。如果他一直在使用单个字符串而不是成对字符串,那么这个问题就会“消失”。