据我所知,模%
是一项非常昂贵的操作,其背后是除法运算,这是CPU最慢的运算。
用代码中的按位模拟number & (divisor - 1)
来显式替换此操作是否值得,或者JIT
可以为我们隐式做到这一点?
答案 0 :(得分:1)
据我所知JIT
并未优化这种表达,所以:
number%divisor
在number & (divisor - 1)
不变(因此divisor
可以在编译时计算)的情况下不比divisor - 1
快(慢或相同的速度)。>
很难说会有多大的差异,因为在现代CPU中,它取决于周围的代码,缓存状态和许多其他因素。
PS:请记住,只有divisor
是2
的幂才能进行优化。