Cra*_*lus 7 java collections optimization bit-manipulation priority-queue
我有以下问题:
如果被问到是否使用移位与乘法或除法(例如答案),请让JVM进行优化.
这里的示例:is-shifting-bits-faster-than-multiplying
现在我正在查看jdk源代码,例如Priority Queue,代码仅使用乘法和除法(有符号和无符号)进行移位.
理所当然地认为SO中的帖子是有效的答案我想知道为什么在jdk他们更愿意通过转移来做到这一点?
它是一些与性能无关的微妙细节吗?我怀疑它必须与上/下溢乘法和除法有关但我不确定.
有人有想法吗?使用移位是否能更好地处理溢出问题?或者只是味道问题?
我认为他们在这个具体的例子中使用符号位.Java语言缺少无符号的类型,所以这是不可能效仿a >>> 1同a /= 2为使用最显著位数字.请注意代码>>>在整个示例中的使用方式.我有理由相信这是为了充分利用整个比特范围.
除了在大多数系统上转换速度快于分区.所述>>>可执行无符号运算,其分裂没有.例如,如果您想要两个值的中点,则需要使用>>>以避免溢出.(有关类似代码,请参阅Arrays.binarySearch)
| 归档时间: |
|
| 查看次数: |
1350 次 |
| 最近记录: |