我想知道哪条代码要运行得更快,因为我想尽可能地进行优化。
代码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没有分支,但我不确定每个代码是如何转换为机器代码的。
更好的是,有没有办法查看从每段代码生成的机器代码?
答案 0 :(得分:3)
然而你转过来,第二种方法你会更安全,因为那里基本上没有分支,只是纯粹的计算。一个好的JIT编译器可能会认识到你的第一个例子中的分支可以被删除,但为什么让JIT和人类读者更难。
答案 1 :(得分:0)
if(__CONDITION_TRUE_?_)
{
return true;
}
else
{
return false;
}
应始终写为
return __CONDITION_TRUE_?_;