比较解决哈希表中冲突的方法

时间:2016-03-14 09:46:18

标签: hash hashmap hashtable

如何在表哈希中比较冲突解决方法(即线性哈希,方形哈希和双哈希)?哪些数据最能显示它们之间的差异?也许有人见过这样的比较。

1 个答案:

答案 0 :(得分:0)

没有简单的方法也具有普遍意义。

也就是说,如果您正在调整实际应用程序,那么一个好的方法是为您在实际感兴趣的应用程序中使用的哈希表实现进行检测(收集统计信息),并处理它处理的实际数据,以及任何感兴趣的功能(插入,擦除,查找等)。当调用这些函数时,记录您想知道的有关发生的冲突的任何内容:取决于您希望的彻底程度,可能包括插入或找到元素之前的冲突数,CPU /内存缓存行数在探测期间触摸,经过的CPU或挂钟时间等。

如果你想要一个更普遍的印象,检测一个实现并在其上投入大量随机数据 - 但要注意,你绘制的任何结论的实际适用性可能只有随机数据类似于现实世界的数据。

对碰撞处理机制的选择还有其他更微妙的含义:线性探测允许实施清理"墓碑"存在已删除元素的存储桶,这需要时间,但会加快以后的性能,因此其他操作中的删除组合会影响您收集的统计信息。

在另一个极端,你可以尝试对不同碰撞处理的属性进行数学比较 - 这超出了我能够或有兴趣在这里覆盖的范围。< / p>