据我所知,modulo %
是一个非常昂贵的操作,由下面的分区操作支持,是CPU的最慢操作。
是否值得或不用代码中的按位模拟number & (divisor - 1)
明确替换此操作,或者JIT
可以隐式地为我们这样做吗?
据我所知,JIT
没有优化这样的表达式:
在number%divisor
恒定的情况下,number & (divisor - 1)
不比divisor
更快(更慢或相同的速度)(所以divisor - 1
可以在编译时计算)。
很难说有多大差异,因为在现代CPU中,它将取决于它周围的代码,缓存状态和许多其他因素。
PS:请记住,只有当divisor
是2
的力量时,优化才有效。