我应该在什么时候做的老调重弹整个哈希表?老调重弹、什么时候、哈希表

2023-09-11 04:17:21 作者:龙卷风卷走爱情

我如何决定什么时候应该怎么做换汤不换药整个哈希表?

解决方案

这取决于你如何解决冲突很大。如果用户线性探测,性能通常开始严重下降pretty的带负荷率达到60%左右的高得多。如果使用双散列,80-85%的负载系数通常是pretty的合理性。如果您使用的碰撞链接,性能通常保持合理的负载系数高达约150%或以上。

我有时甚至创建了平衡树的冲突解决一个哈希表。在这种情况下,可以几乎的忘记重新散列 - 的性能不会开始恶化明显,直到项目的数量由至少几个数量级超过该表的大小

How do I decide when should I do rehashing of entire hash table?

解决方案 老调重弹,既懂技术又懂管理的人才发展中的实际问题

This depends a great deal on how you're resolving collisions. If you user linear probing, performance usually starts to drop pretty badly with a load factor much higher than 60% or so. If you use double hashing, a load factor of 80-85% is usually pretty reasonable. If you use collision chaining, performance usually remains reasonable with load factors up to around 150% or or more.

I've sometimes even created a hash table with balanced trees for collision resolution. In this case, you can almost forget about re-hashing -- the performance doesn't start to deteriorate noticeably until the number of items exceeds the table size by at least a couple orders of magnitude.