Mat*_*ins 28 java performance bit-manipulation bit-shift division
很多年前,在大学里,我学会了正确地按位移动实现与除以2相同的操作,但通常要快得多.自从9-10年前我了解到这一点以来,我不确定Java在这方面是如何出现的.Java编译器是否自动将二分频转换为位移操作,还是应该自己在代码中手动执行位移操作?
Pau*_*sik 61
除非你在一个商店和代码库中工作,其中比特移位是常见的,恕我直言,你冒着混淆的风险.是的,表达式可能在逻辑上等效,但是:
所有这些都是相对的,而且,真的取决于您的商店标准.如果你的同事喜欢按位移动,那么无论如何都会出现并且按位移动.
Rém*_*émi 19
现代编译器非常聪明,能够为两个分区生成最快的代码.如果速度更快,他们会做出改变.如果你想要实现的是除以2,使用除法将使你的代码更清晰.当要分割的数字为负数时,您将避免出现问题.
Mic*_*rdt 15
是的,这是任何试图进行编译器优化的人都会做的第一件事(并且已经完成了至少50年),它肯定是由Java JIT编译器完成的,你可能很难找到它任何不这样做的编译器.
即使他们没有,仍然应该避免过早的微优化,以使代码更清晰.
Mal*_*ist 11
CPU的除法例程将处理此问题.你没有必要这样做.
这被称为过早优化.
| 归档时间: |
|
| 查看次数: |
29296 次 |
| 最近记录: |