栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么String的hashCode()不缓存0?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么String的hashCode()不缓存0?

您不用担心。这是考虑此问题的一种方法。

假设您有一个应用程序什么都不做,只是整年都在哈希字符串周围。假设它需要全部存储在内存中的一千个字符串,以循环方式在它们上反复调用hashCode(),经过一百万次,然后再获取一千个新字符串,然后再次执行。

并假设字符串的哈希码为零的可能性实际上远大于1/2 ^ 32。我敢肯定,这是 有点 更大的1/2 ^ 32,但让我们说这是比差很多,像1 / ^
16(平方根!现在这是一个差很多!)。

在这种情况下,与其他任何人相比,Oracle工程师在改进这些字符串的哈希码的缓存方式方面将受益更多。因此,您给他们写信并要求他们修复它。他们发挥了魔力,因此只要s.hashCode()为零,它就会
立即 返回(甚至是第一次!100%的改善!)。可以说,在任何其他情况下,他们这样做都不会降低性能。

万岁!现在您的应用程序…让我们看看…快0.0015%!

过去需要花费一整天的时间现在只需23小时,57分钟和48秒!

并且请记住,我们设置了场景以使怀疑的所有可能好处,通常到了可笑的程度。

这对您来说值得吗?

编辑:
自从几个小时前发布此消息以来,我让我的一个处理器疯狂运行以寻找具有零哈希码的两个单词的短语。到目前为止,它提出了:甲壳动物zorillo,计时码表schtoff,挫伤性的回廊状,creashaks的有机杂志,鼓木巨石头,可进行电分析的且难以理解的。这是在大约2
^
35的可能性中进行的,因此,理想的分布情况下,我们希望只能看到8。显然,到完成时,我们的数量将是原来的几倍,但不会更多。更重要的是,我现在提出了一些有趣的乐队名称/专辑名称!没有公平的偷窃!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/449535.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号