按位显式替换模运算?

问题描述 投票:-1回答:1

据我所知,modulo %是一个非常昂贵的操作,由下面的分区操作支持,是CPU的最慢操作。

是否值得或不用代码中的按位模拟number & (divisor - 1)明确替换此操作,或者JIT可以隐式地为我们这样做吗?

java performance jit
1个回答
1
投票

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

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

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

PS:请记住,只有当divisor2的力量时,优化才有效。

© www.soinside.com 2019 - 2024. All rights reserved.