【发布时间】:2019-09-07 13:52:26
【问题描述】:
使用三元运算符时,写类似
的代码很方便String name = employee.getName() != null ? employee.getName() : "";
比(大多数时候)更有效的代码,如
String name = employee.getName();
if (name == null) {
name = "";
}
Q1.我很想知道 JIT 编译器如何优化此代码。
在尝试通过互联网寻找答案时,尽管我找到了一些参考资料,但它们并未涵盖此特定案例。
即使得到答案我也很高兴
Q2. 找出 JIT 编译器优化的最简单方法。 (eclipse的一些插件工具。)
【问题讨论】:
-
即时 (JIT) 编译器适用于字节码,而不是源代码,并且是 Java VM 的一部分(例如 HotSpot 或 OpenJ9)。即使是
javac或Eclipse 编译器从源代码创建的字节码也可能由于不同的优化而不同。你能说一下你的意思是哪个编译器吗? -
您可以告诉 VM 记录任何 jit:ing 并自己查看。请注意,无法保证其实现方式不会随着时间而改变。有关更多信息,请参见此处:oracle.com/technetwork/articles/java/…
-
顺便说一句,在第一个代码中,sn-p
name是一个有效的最终变量,但在第二个sn-p 中不是。
标签: java eclipse ternary-operator jit