【问题标题】:How does performance vary between a 1 million item hashtable and a 100 item hashtable100 万项哈希表和 100 项哈希表之间的性能有何不同
【发布时间】:2012-02-13 11:04:57
【问题描述】:

我知道哈希表可能存在性能问题,但是具有 100 万个项目的哈希表如何能比具有 100 个项目的哈希表更快?

【问题讨论】:

  • 您是在谈论HashtableHashMapConcurrentHashMap 还是一般的哈希表?当你自己试验它们时,你发现了什么?

标签: data-structures hashtable


【解决方案1】:

这取决于所使用的哈希算法的效率。

如果小地图有很多碰撞,而大地图没有碰撞,那么大地图会更快。

阅读HashMap javadocs 以了解初始容量负载因子,并阅读哈希码(以Object.hashCode() 开头)。 (Hashtable是古代遗物,don't use it。)

【讨论】:

    【解决方案2】:

    这完全取决于冲突的数量:如果哈希表中有 100 万个项目完全没有冲突,那将比有 100 个项目和 100 个冲突的哈希表快得多。

    如果没有冲突,查找将是 O(1),仅使用散列键和模(参见完美散列)。在发生冲突的情况下(假设哈希表是数组,并且冲突链接在链表中),您必须依次遍历所有这些项,直到找到有问题的项目,最坏的情况是 100% 的冲突率(想想恒定哈希函数,即)将是 O(n)。

    【讨论】:

      猜你喜欢
      • 2013-03-21
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 2019-02-23
      • 1970-01-01
      • 2018-10-13
      • 2023-03-27
      • 1970-01-01
      相关资源
      最近更新 更多