可能重复:
Is shifting bits faster than multiplying and dividing in Java? .NET?
Quick Java Optimization Question
很多年前,在大学里,我学到了用一个位变换来完成和除以两个相同的事情,但是通常速度要快得多。我不知道自9-10年前我了解到Java之后,Java在这方面是如何发展的。Java编译器是自动将除法二转换为位移位操作,还是应该自己在代码中手动执行位移位操作?
发布于 2010-11-01 20:17:49
除非你在一家商店里工作,而且代码库中的位移位很常见,否则IMHO,你就有被混淆的危险。是的,这些表达式在逻辑上可能是等价的,但:
。
所有这些都是相对的,而且,同样地,也取决于你商店的标准。如果你的同事喜欢比特变换,那么无论如何都要向前移动。
发布于 2010-11-01 20:20:25
是的,这是任何试图进行编译器优化的人都会做的第一件事(而且已经做了至少50年了),这肯定是由Java JIT编译器完成的,而且您可能很难找到任何不这样做的编译器。
即使他们没有,这仍然是一个不成熟的微观优化,应该避免,以使代码更清晰。
发布于 2010-11-01 20:17:53
CPU的除法例程将处理这个问题。你没必要这么做。
这被称为早熟优化。
https://stackoverflow.com/questions/4072703
复制相似问题