Java 中哪段代码更快

Which of these pieces of code is faster in Java

我想知道哪段代码会 运行 更快,因为我想尽可能多地进行优化。

代码 A:

if(((a & 0x0FFF) + (b & 0x0FFF)) & 0x1000 != 0)
{
    Register.setHCarryFlag(true);
}
else
{
    Register.setHCarryFlag(false);
}

代码 B:

Register.setHCarryFlag(((a & 0x0FFF) + (b & 0x0FFF))& 0x1000 != 0);

我问的原因是我怀疑代码 B 没有分支,但我不确定每个代码是如何转换为机器代码的。

更好的是,有没有办法查看从每段代码生成的机器代码?

无论你怎么转,第二种方法都会更安全,因为那里基本上没有分支,只有纯计算。一个好的 JIT 编译器可能会认识到您在第一个示例中的分支可以被删除,但为什么要让 JIT 和人类更难做到这一点 reader.

if(__CONDITION_TRUE_?_) 
{
    return true;
} 
else 
{
    return false;
} 

应该总是写成

return __CONDITION_TRUE_?_;