在Java中,我应该位移除以2吗?
2022-09-01 07:07:31
许多年前,在大学里,我了解到右移位一与除以二完成相同的事情,但通常要快得多。我不确定Java在这方面是如何出现的,因为9-10年前我了解到这一点。Java 编译器是自动将二除法转换为位移操作,还是应该自己在代码中手动执行位移操作?
许多年前,在大学里,我了解到右移位一与除以二完成相同的事情,但通常要快得多。我不确定Java在这方面是如何出现的,因为9-10年前我了解到这一点。Java 编译器是自动将二除法转换为位移操作,还是应该自己在代码中手动执行位移操作?
除非你在一家商店和一个代码库中工作,在那里位移位是很常见的,那么,恕我直言,你有混淆的风险。是的,这些表达式在逻辑上可能是等效的,但是:
所有这些都是相对的,同样,实际上取决于您商店的标准。如果你的同事喜欢位移,那么一定要去位移位。
是的,这是任何尝试进行编译器优化的人都会做的第一件事(并且已经做了至少50年),它肯定是由Java JIT编译器完成的,你可能很难找到任何不这样做的编译器。
即使他们没有这样做,这仍然是一个过早的微优化,应该避免,而让代码更清晰。