【发布时间】:2023-03-12 13:03:01
【问题描述】:
我正在使用 murmur 哈希在哈希表中存储 150,000 个单词 我正在使用线性探测来解决程序中的冲突。我想如果我的hashtable的大小很大,那么会有大量的空闲空间,我就不用去探查很久了。但是奇怪的事情发生了。当哈希表的大小为 250,000 时,我得到了最快的运行时间。之后,运行时间增加。为什么会这样?
【问题讨论】:
-
Locality,可能。
-
这可能是由于您的 cpu 的缓存大小。一旦缓存填满,内存管理器将不得不调出数据,这会对性能造成很大影响。
-
除了局部性问题之外,还有许多其他原因可以说明散列表的所谓“1 阶”性能在任何现实世界场景中都是一个神话。
-
@HotLicks 还有什么其他原因?
-
@Aymen - 碰撞处理、溢出处理、散列函数异常、扩展和重新平衡等。