用于三元运算符的Java JIT编译器优化

问题描述 投票:1回答:1

使用三元运算符时,编写代码非常方便

String name = employee.getName() != null ? employee.getName() : "";

比(大多数时候)更有效的代码

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

Q1。我很想知道JIT编译器如何优化这段代码。

虽然我试图通过互联网找到答案,尽管我发现了几个参考文献,但他们并没有涵盖这个特殊情况。

即使我得到答案,我也很高兴

Q2。找出JIT编译器优化的最简单方法。 (插件的一些工具可以遮挡。)

java eclipse ternary-operator jit
1个回答
2
投票

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

Why not do this

你想在这里做的事情,这称为微基准测试。 Brian Goetz写了一个long post为什么这通常是一个坏主意。以下是一些亮点:

  • 优化还取决于您的操作系统和硬件
  • 对于大多数应用程序而言,这种加速并不重要
  • 只测量你感兴趣的东西真的很难

What to do instead

您可以测量您的应用程序。您可以使用visualvm等工具找到应用中的瓶颈。然后你可以优化那个部分。优化通常具有创造性,例如使用缓存,或仅扩展系统的特定部分。

But you really want to do microbenchmarks

在这种情况下,您可以执行以下两项操作:

  • 读取字节码并尝试猜测哪种设置会更快(OS +硬件)
  • 使用java中引入的microbenchmark框架。这会给你一些numnbers。这些数字仍然是特定于设置的,与您的应用程序无关。但是,测量部分将是准确的。
© www.soinside.com 2019 - 2024. All rights reserved.