这些代码中的哪一段在Java中更快

时间:2015-08-30 08:56:28

标签: 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 != 0);

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

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

2 个答案:

答案 0 :(得分:3)

然而你转过来,第二种方法你会更安全,因为那里基本上没有分支,只是纯粹的计算。一个好的JIT编译器可能会认识到你的第一个例子中的分支可以被删除,但为什么让JIT和人类读者更难。

答案 1 :(得分:0)

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

应始终写为

return __CONDITION_TRUE_?_;