通过按位显式替代模运算?

时间:2019-03-26 09:09:36

标签: java performance jit

据我所知,模%是一项非常昂贵的操作,其背后是除法运算,这是CPU最慢的运算。

用代码中的按位模拟number & (divisor - 1)来显式替换此操作是否值得,或者JIT可以为我们隐式做到这一点?

1 个答案:

答案 0 :(得分:1)

据我所知JIT并未优化这种表达,所以:

number%divisornumber & (divisor - 1)不变(因此divisor可以在编译时计算)的情况下不比divisor - 1快(慢或相同的速度)。

很难说会有多大的差异,因为在现代CPU中,它取决于周围的代码,缓存状态和许多其他因素。

PS:请记住,只有divisor2的幂才能进行优化。