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_?_;
我想知道哪段代码会 运行 更快,因为我想尽可能多地进行优化。
代码 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_?_;