- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在浏览 Guava 代码库和 in Preconditions
source there is some explanation如下引用:
All recent hotspots (as of 2009) really like to have the natural code
if (guardExpression) {
throw new BadException(messageExpression);
}refactored so that messageExpression is moved to a separate String-returning method.
if (guardExpression) {
throw new BadException(badMsg(...));
}The alternative natural refactorings into void or Exception-returning methods are much slower. This is a big deal - we're talking factors of 2-8 in microbenchmarks, not just 10-20%. (This is a hotspot optimizer bug, which should be fixed, but that's a separate, big project).
The coding pattern above is heavily used in java.util, e.g. in ArrayList. There is a
RangeCheckMicroBenchmark
in the JDK that was used to test this.But the methods in this class want to throw different exceptions, depending on the args, so it appears that this pattern is not directly applicable. But we can use the ridiculous, devious trick of throwing an exception in the middle of the construction of another exception. Hotspot is fine with that.
它适用于哪些 jvm?为什么它很慢,我无法理解?作为开发人员,这对我意味着什么?它是否仍然适用于 oracle 和 openjdk 的 java8 jvms?如何在编写代码时利用这条信息?
最佳答案
For which jvm(s) it is applicable?
HotSpot - Oracle 的 JVM 实现
Why it is slow, I cant understand?
这是 JVM 实现的一个特性。没有特别的原因(就 JLS/JVMS 而言)为什么它应该更慢,但截至上次有人分析它时,确实如此。您找到的 RangeCheckMicroBenchmark
类有更多详细信息和示例。
What it implies for me as developer?
没有。除非您正在实现一个像 Preconditions
这样的类——它有数百万次使用,所有这些都需要尽可能接近零开销——您没有理由担心这个细节。这就是为什么它是代码注释,而不是 Javadoc 注释。
Is it still applicable for java8 jvms by oracle and openjdk?
可能是的。该评论未链接到特定的 HotSpot 错误,但您可以在 JDK 邮件列表中搜索基准代码的提及并找到相关错误。
如果 JVM 的行为发生变化,Preconditions
很可能会更新。
How to take advantage of this piece of information while writing code?
确实没有必要这样做。如果您最终编写了 Guava 2.0,您将(希望)运行您自己的基准测试,并会发现值得以这种方式解决的瓶颈。尝试利用微优化而不对您自己的代码进行严格的基准测试可能弊大于利。
关于java - 请解释 Guava 代码库中 Preconditions.java 的热点优化重构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40487188/
我试图通过屏幕截图捕获带有突出显示的元素,但在屏幕截图中,该元素不带有突出显示。有谁知道解决办法吗?当我捕获文本时会出现突出显示:automatests@gmail.com 查看我的代码: Utili
大家好,我是编码的新手,我正在和一位老师一起上 Java 入门课,希望您已经了解一切。我必须对冰雹序列进行编码,它表示为: 选择一些正整数并将其命名为 n。如果 n 是偶数,则将其除以二。如果 n 是
如果存在名称相同的SCOM组,则尝试制作一个请求更多信息(组ID)的脚本: function myFunction { [CmdletBinding()] Param(
我有这张表: id | CUPNAME | FRENCHNAME 1 | 2 | null 2 | null | 4 我想从非空的 CUPNAME 和 FRENCHNAME 中提
我是 Collection View 的新手,想知道这是否是创建它们的最佳方式,我还想了解一些关于从哪里转到启用分页的详细 View 的建议。 #import "MarbleCollectionVie
好的,这是非常好的 jquery slider 。 http://srobbin.com/jquery-plugins/pageslide 我所做的是 http://mbu.mn/test 问题来了。
...有人可以解释一下区别吗? 我在命令提示符下输入的内容: sys.path.append('M:/PythonMods') import qrcode myqr = qrcode.make("ra
我不时在我的服务器上运行 bash 脚本,我正在尝试编写一个脚本来监视日志文件夹并在文件夹超出定义的容量时压缩日志文件。我知道有更好的方法来做我目前正在尝试做的事情,非常欢迎您提出建议。下面的脚本抛出
我是 Groovy & Grails 的新手,我觉得事情不必那么难看……那么我怎样才能让这段代码更好看呢? 这是一个 Grails Controller 类,去掉了一些无趣的部分。尽量不要太挂断我的
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 7年前关闭。 Improve this questi
在这个查询中,除了 5 个连接表之外,我试图使用第 6 个表“Days”将值与连接中的三个表进行比较。但它给了我错误,我不能在连接中使用子查询。 select a.ID, a.Name, a.AMT,
我不想通过 Xpath 提取,我想要更清晰的代码。谢谢我的世界兄弟 来自 Xpath,好的!! Assert.assertEquals("Digite um e-mail ou número de t
这个问题已经有答案了: Google Map is not loading due to inflate exception (3 个回答) 已关闭 9 年前。 我知道有很多关于此的帖子,但我就是无法
我的问题.. a.) 使用内存分配创建一个 float 组来存储 GPA 分数10名学生。为其分配值(您的选择) b.) 找出该数组中的最大 GPA。 c.) 将此数组的内容写入文件 alloc.tx
我最近要制作 Sequelize 。 我有 2 个表,data_track 和 car_detail。我想尝试关联那 2 个表,但它从未关联过。 总是返回错误SequelizeEagerLoading
我有一些代码在 LINQ 中根本无法工作的问题,但它确实可以作为一个简单的 for..each 工作。任何解释和解决方案将不胜感激。 我有 3 个类,Users、User 和 UserPermissi
我正在设计我的第一个大型数据库,并想检查我是否可以提供表关系。 我正在设计一个网络应用程序,其中 用户可以在团队中玩游戏 每个游戏都有其类别 用户为游戏创建他们的团队并选择他们的团队类别 每个游戏都启
我很抱歉成为一个 CSS 菜鸟,希望有人能指导我正确的方向。 我需要帮助的网页可以在 http://filefx.com 找到 当您点击该页面时,您会注意到“选择文件”图标和“上传文件”图标不在同一行
我已经尝试过这个我在网上找到的演示代码练习并创建了这个 slider ,使用滚动条更容易获得它,因为它们已经是为此制作的脚本。现在我正在尝试修改此脚本及其 css,以将滚动条更改为左右两侧的箭头。我已
最近我对 CSS 很感兴趣。学习不同的东西。 我正在尝试像这样放置三个 div: http://i.stack.imgur.com/miN9G.png 我得到的: http://i.stack.img
我是一名优秀的程序员,十分优秀!