那么如果我们告诉编程语言来计算这个: X / 1,其中X是任意数字。他们实际上是计算输出还是检查/忽略1并返回X?
此外,当编码类似于上面的内容时,是否值得检查分频器是否为1或者是否更快让它计算分频?
谢谢
为了详细说明这个问题:哪个更快?
$result = $number / $divisor;
或
$result = $divisor > 1 ? $number / $divisor : $number;
答案 0 :(得分:2)
大多数编程语言可能不会检查特殊除数(0除外)。
现在CPU在分工方面非常快,所以事先不值得检查。检查可能需要比实际部门更长的时间。
答案 1 :(得分:2)
比较示例(至少对于PHP):
<?php
$divisor = 1;
for ($i=0; $i<100000000; $i ++ ) {
if ($divisor != 1)
$a = $i / $divisor;
else
$a = $i;
}
在我的计算机上取6.9s
。另一个:
<?php
$divisor = 1;
for ($i=0; $i<100000000; $i ++ ) {
$a = $i / $divisor;
}
仅需5.2s
所以回答最后一个问题,哪一个更快:让它计算分裂: - )
答案 2 :(得分:0)
由于检查和跳转+实际除法将比使用除法更多cpu指令,我很确定它只会完成。
如果您的代码是变量/ 1(1是静态的),编译器很可能会将其优化掉。