我有以下问题:
如果问是否使用移位比使用乘法或除法更好,答案是让JVM进行优化。
例如:is-shifting-bits-faster-than-multiplying 现在我正在查看jdk源代码,例如Priority Queue,代码仅使用移位进行乘法和除法(有符号和无符号)。
鉴于SO中的帖子是有效答案,我想知道为什么jdk更喜欢使用移位?这与性能无关的微妙细节吗?我怀疑它必须与溢出乘法和除法有关,但我不确定。有人有想法吗?使用移位处理微妙的溢出问题更好吗?还是只是品味问题?
如果问是否使用移位比使用乘法或除法更好,答案是让JVM进行优化。
例如:is-shifting-bits-faster-than-multiplying 现在我正在查看jdk源代码,例如Priority Queue,代码仅使用移位进行乘法和除法(有符号和无符号)。
鉴于SO中的帖子是有效答案,我想知道为什么jdk更喜欢使用移位?这与性能无关的微妙细节吗?我怀疑它必须与溢出乘法和除法有关,但我不确定。有人有想法吗?使用移位处理微妙的溢出问题更好吗?还是只是品味问题?
/
运算符。 - Cratylusn/2
是不可能的。我通过结合n/2
、条件语句、按位AND
和按位OR
来模拟它,但这可能会导致性能上的显著损失。 - Sergey Kalinichenko