java - 按位显式替换模运算?
问题描述
据我所知,取模%
是一项非常昂贵的操作,由下面的除法操作支持,这是 CPU 最慢的操作。
是否值得number & (divisor - 1)
用代码中的按位模拟显式替换此操作,或者JIT
是否可以为我们隐式执行此操作?
解决方案
据我所知JIT
并没有优化这样的表达:
number%divisor
不比恒定number & (divisor - 1)
的情况下更快(更慢或相同的速度) divisor
(因此divisor - 1
可以在编译时计算)。
很难说会有多大差异,因为在现代 CPU 中,它取决于周围的代码、缓存状态和许多其他因素。
PS:请记住,只有当divisor
是 的力量时,优化才会起作用2
。
推荐阅读
- python - Reportlab - 表格扩展到多个框架和页面
- django - Django Rest Framework Serializer - 返回相关字段
- asp.net - 文本框值未在 ASP.NET MVC 中更新
- google-sheets-formula - 谷歌表格 SQL 查询
- haskell - 全局变量“total”未正确更新
- javascript - 为多租户架构设置 cookie 的最佳方式
- r - 在 geom_histogram 中预定义 bin
- python - 像frozenset这样维护插入顺序的数据结构?
- c# - ASP.NET MVC:从视图获取值到控制器
- c++ - 如何过滤 Visual Studio 上的调试输出窗口?