【发布时间】:2015-03-20 18:50:51
【问题描述】:
那么如果我们告诉编程语言来计算这个: X/1,其中 X 是任意数字。他们实际上是计算输出还是检查/忽略 1 并返回 X?
此外,在编写类似上述代码时,是否值得检查除法器是否为 1,或者让它计算除法是否更快?
谢谢
为了详细说明这个问题:哪个更快?
$result = $number / $divisor;
或
$result = $divisor > 1 ? $number / $divisor : $number;
【问题讨论】:
-
1 是 2 的幂,所以它应该被转换为右移(零),这反过来又是一个空操作。我猜。
-
编译器/优化器会去掉它。如果它是一个运行时参数,你仍然不想检查,因为通常你很少有 1 作为除数。顺便说一句,除法通常是通过一些迭代算法完成的。使用 1 时会很快收敛。因此这不是什么大问题。
-
@sp2danny:仅当编译器知道该值时才为真。对于用户输入,您需要 JIT 才能找到它。
-
除法通常使用 DIV CPU 指令完成,我敢打赌
-
@neuhaus:DIV DBPU 指令在内部是如何工作的......?
标签: division integer-division relational-division