以下哪一段代码在Java中更快

以下哪一段代码在Java中更快,java,optimization,emulation,gameboy,Java,Optimization,Emulation,Gameboy,我想知道哪段代码运行得更快,因为我想尽可能地优化 代码A: if(((a & 0x0FFF) + (b & 0x0FFF)) & 0x1000 != 0) { Register.setHCarryFlag(true); } else { Register.setHCarryFlag(false); } 代码B: Register.setHCarryFlag(((a & 0x0FFF) + (b & 0x0FFF))& 0x1000

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

代码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和人类读者更难理解呢。

不管你如何使用它,第二种方法会更安全,因为根本没有分支,只有纯计算。一个好的JIT编译器可能会认识到第一个例子中的分支是可以消除的,但是为什么要让JIT和人类读者更难理解呢。

不管你如何使用它,第二种方法会更安全,因为根本没有分支,只有纯计算。一个好的JIT编译器可能会认识到第一个例子中的分支是可以消除的,但是为什么要让JIT和人类读者更难理解呢。

不管你如何使用它,第二种方法会更安全,因为根本没有分支,只有纯计算。一个好的JIT编译器可能会认识到第一个示例中的分支是可以消除的,但是为什么要让JIT和人类读者更难理解呢

if(__CONDITION_TRUE_?_) 
{
    return true;
} 
else 
{
    return false;
} 
应始终写为

return __CONDITION_TRUE_?_;
应始终写为

return __CONDITION_TRUE_?_;
应始终写为

return __CONDITION_TRUE_?_;
应始终写为

return __CONDITION_TRUE_?_;