Java JIT编译器针对三元运算符的优化

时间:2019-04-17 10:28:06

标签: java eclipse ternary-operator jit

使用三元运算符时,编写

这样的代码非常方便
String name = employee.getName() != null ? employee.getName() : "";

比(大多数情况下)更有效的代码(如

String name = employee.getName();
if (name == null) {
    name = "";
}

第一季度。我很想知道JIT编译器如何优化此代码。

尽管我找到了一些参考资料,但试图通过Internet查找答案,但它们并未涵盖此特殊情况。

我很高兴,即使得到答案

第二季度。找出JIT编译器优化的最简单方法。 (一些用于蚀的插件工具。)

1 个答案:

答案 0 :(得分:2)

我将给出臭名昭著的Stack Overflow答案:“错误的方法,做其他事情”。

为什么不这样做

您要在此处执行的操作称为微基准测试。布莱恩·格茨(Brian Goetz)写道long post,为什么这通常是个坏主意。这里有一些亮点:

  • 优化也取决于您的操作系统和硬件
  • 对于大多数应用程序而言,这种加速无关紧要
  • 仅测量您感兴趣的东西真的很困难

该怎么做

您可以衡量您的应用程序。您可以使用visualvm之类的工具在应用程序中找到瓶颈。然后您可以优化该部分。优化通常是创造性的,例如使用缓存,或仅扩展系统的特定部分。

但是您真的想做微基准测试

在这种情况下,您可以做以下两件事:

  • 读取字节码,然后尝试猜测设置(操作系统+硬件)中哪种更快
  • 使用Java中引入的microbenchmark框架。这会给你一些数字。这些数字仍然是特定于安装程序的,与您的应用程序无关。但是,测量部分将是准确的。