首页 > 解决方案 > 按位显式替换模运算?

问题描述

据我所知,取模%是一项非常昂贵的操作,由下面的除法操作支持,这是 CPU 最慢的操作。

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

标签: javaperformancejit

解决方案


据我所知JIT并没有优化这样的表达:

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

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

PS:请记住,只有当divisor是 的力量时,优化才会起作用2


推荐阅读