繁体   English   中英

在编程语言中除以1

[英]Division by 1 in programming languages

那么如果我们告诉编程语言来计算这个:X / 1,其中X是任意数字。 他们实际上是计算输出还是检查/忽略1并返回X?

此外,当编码类似于上面的内容时,是否值得检查分频器是否为1还是更快才让它计算分频?

谢谢


为了详细说明这个问题:哪个更快?

$result = $number / $divisor;

要么

$result = $divisor > 1 ? $number / $divisor : $number;

大多数编程语言可能不会检查特殊除数(0除外)。

如今CPU的分区速度非常快,所以事先不值得检查。 检查可能需要比实际划分更长的时间。

比较示例(至少对于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

所以回答最后一个问题,哪个更快:让它计算分区:-)

因为检查和跳转+实际除法将比使用除法更多cpu指令,我很确定它只会被完成。

如果您的代码是变量/ 1(1是静态的),编译器很可能会优化它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM