问题标签 [load-factor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1101 浏览

java - 何时丢弃 hashmap 内容以避免性能下降?

我正在使用一个大型(数百万)哈希图在 Java 上工作,该哈希图实际上是用 10.000.000 的容量和 0.75 的负载因子构建的,它用于缓存一些值

因为缓存的值随着时间的推移变得无用(不再访问)但我无法删除无用的值,而我想在缓存的性能开始下降时完全清空缓存。我怎样才能决定什么时候这样做是好的?

例如,有 1000 万个容量和 0.75,当它达到 750 万个元素时我应该清空它吗?因为我尝试了各种阈值,但我想要一个分析阈值。

我已经测试了这样一个事实,即当它非常满时将其清空可以提高性能(擦除后的前 2-3 次算法迭代只是将其填满,然后它开始比擦除前更快地运行)

编辑:附加信息

hashmap 有 long as 键和 float 作为值。它包含缓存的内容相关性,因为它是标签向量的点积,我想缓存它们(以提高性能)。

所以基本上我所做的是long使用 2 个内容的哈希码计算一个密钥:

并使用它来检索存储的值。发生的情况是,由于它是一个层次聚类,内容被合并,不再需要它们与其他内容的相关值。这就是为什么我想不时擦除哈希图,以避免由于其中无用的值而退化。

使用 aWeakHashMap也会在仍然需要数据时意外地清除数据。我无法控制它。

谢谢

0 投票
4 回答
1471 浏览

c - 缩小哈希表的大小是否有意义?什么时候?

我的哈希表实现具有在负载达到约 70% 时调整表大小的功能。我的哈希表是通过单独的冲突链接实现的。

我应该在任何时候缩小哈希表的大小还是应该让它保持原样是否有意义?否则,如果我在负载为 70% 时增加大小(几乎翻倍,实际上我遵循:Link),当负载达到 30% 或更低时,我是否应该将其缩小?

0 投票
1 回答
694 浏览

hashtable - 哈希表:我应该增加碰撞时的元素计数吗?

现在我的哈希表计算插入到哈希表中的每个元素的数量。我使用这个计数和总哈希表大小来计算负载因子,当它达到 70% 时,我重新哈希它。

我在想也许我应该只计算插入的元素填充一个空插槽而不是所有它们。因为我使用的碰撞方法是单独的链接。因子负载不断增加,但如果可能存在一些冲突,则会在哈希表上留下大量空槽。

你可能在想,如果我有那么多冲突,也许我没有使用最好的散列方法。但这不是重点,我正在使用一种已知的散列算法,我在我的样本数据上测试了其中的 3 个,并选择了产生较少冲突的那个。

我的问题仍然存在。我应该继续计算插入的每个元素,还是只计算填充哈希表中空槽的元素?

0 投票
1 回答
1237 浏览

hashtable - 是使用开放寻址在哈希表的负载因子中计算的已删除条目

在计算具有开放寻址数组实现的哈希表的负载因子时,我正在使用:

但是我突然想到,由于必须将已删除的条目标记为这样(以将它们与空格区分开来),因此将它们包含在键的数量中可能是有意义的。

我的想法是,就估计查找条目的平均探测次数而言,删除的条目应该计入负载因子,但就插入新键而言,它们不应该。

哪个是正确的计算:是否包括已删除的密钥?

0 投票
1 回答
1341 浏览

initialization - 初始化哈希表的大小

如果我有一个我知道将存储 13 个项目的哈希表,我如何将我的表初始化为适当的大小?我在我的书中读到负载系数应该在 2/3 或以下。这是否意味着如果我已经知道在任何时候我的表中的最大项目数将是 13,我可以执行以下操作:

我对上述分配的想法是 numEntries 代表数字 13,因为我知道负载因子必须低于 2/3,所以我找到了使比率为 2/3 所需的值。

0 投票
8 回答
221365 浏览

java - HashMap中负载因子的意义是什么?

HashMap有两个重要的性质:sizeload factor。我浏览了 Java 文档,它说0.75f是初始负载因子。但我找不到它的实际用途。

有人可以描述我们需要设置负载因子的不同场景以及不同情况下的一些示例理想值吗?

0 投票
1 回答
2994 浏览

java - 计算合并重复项的哈希表中的负载因子?

对于一个项目,我正在创建一个字符串哈希表。它使用单独的链接,并且为表中的每个填充位置创建一个链表。该链表包含一个节点,该节点存储字符串及其频率。因此,当插入字符串时:

1.) 如果它与另一个字符串的哈希匹配,并且当前字符串不在表中,它将在该哈希值处附加到列表中,并且频率为 1。

2.) 如果表中已有该字符串的副本,则该字符串的频率将增加。

我将如何计算此表的负载因子?它会是哈希表中位置总数的节点数(这不包括列表)。或者,它是频率总和除以哈希表中的位置数吗?-谢谢!

0 投票
4 回答
230 浏览

java - 地图加载因子,地图如何增长

根据我的理解,以及我所读到的

负载因子是哈希表在其容量自动增加之前允许达到的程度的度量

因此,当 loadfactor 为 .8(80%),地图大小为 10Map时,当放入 8 个元素时,大小将增长 10 Map

所以,现在Map大小为 20。我怀疑下一个 10 元素空间何时会添加到Map.

  • whenMap又是 80% 满了,也就是放入 16 个元素的时候Map

或者

  • 当放入 18 个元素时Map
0 投票
2 回答
921 浏览

java - 哈希表中的低/高负载因子

我要在java中编写一个链式哈希集类。

我知道负载因子是 M/容量,其中 M 是表中当前元素的数量,容量是表的大小。

但是负载因子如何帮助我确定是否应该调整表格大小并重新散列?我也找不到任何地方如何计算下/上负载因子。他们甚至需要吗?

我希望这是足够的信息,谢谢!

0 投票
1 回答
1477 浏览

java - 即使达到阈值,Hashmap 容量也不会增加

Java doc说-当哈希表中的条目数超过负载因子和当前容量的乘积时,哈希表被重新哈希

在下面的程序中 -

Key 是Integer类型,在插入第 13 到第 15 个元素时,HashMap 容量保持为 16,阈值保持为 12,为什么?

在地图中添加第 13 个元素后调试屏幕截图 -

带有 String 类型键的 HashMap -HashMap<String, String>或自定义类 -Map<Employee,Integer>在第 13 次插入时显示预期行为