哪个更有效率? 1个带有2个方程的循环或带有一个方程的2个循环?

时间:2017-08-10 09:51:08

标签: php loops

例如,你有循环:

$i=0;
while($i<5) {
    $x[$i] = $a[$i] + $b[$i];
    $y[$i] = $x[$i] / $c[$i];
    $i++;
}

计算速度是否快于:

$i=0;
while($i<5) {
    $x[$i] = $a[$i] + $b[$i];
    $i++;
}

$i=0;
while($i<5) {
    $y[$i] = $x[$i] / $c[$i];
    $i++;
}

或者它们是一样的吗?我完全不知道代码是如何编译或执行的。

感谢您的回答。我对编程非常陌生,所以我不知道可以测试代码的效率。

3 个答案:

答案 0 :(得分:1)

您可以衡量自己花费的时间并找出答案......

示例,借鉴Tracking the script execution time in PHP

$rustart = getrusage();

// script start
$i=0;
while($i<5) {
    $x[$i] = $a[$i] + $b[$i];
    $i++;
}


// Script end
function rutime($ru, $rus, $index) {
    return ($ru["ru_$index.tv_sec"]*1000 + intval($ru["ru_$index.tv_usec"]/1000))
     -  ($rus["ru_$index.tv_sec"]*1000 + intval($rus["ru_$index.tv_usec"]/1000));
}

$ru = getrusage();
echo "This process used " . rutime($ru, $rustart, "utime") .
    " ms for its computations\n";
echo "It spent " . rutime($ru, $rustart, "stime") .
    " ms in system calls\n";

答案 1 :(得分:0)

第二段代码肯定会花费更多时间。 您在两段代码中执行完全相同的操作,唯一的两个区别是您将循环本身和$i上的增量加倍。

此代码:

while ($i < 5) {
    ++$i;
}
无论你把它放在哪里,

都会消耗相同的时间。如果你编写两次代码,则需要两倍的时间。

这就是为什么将两个作业放在同一个循环中会给你带来更好的表现。

答案 2 :(得分:0)

有一种非常简单的方法可以找到,只需将代码提供给http://3v4l.org并查看输出!

示例1

示例1

注意但是,一般来说,这取决于你在循环中做了什么,以及你想要优化的内容:

  • 代码的表现
  • 代码的可读性

如果您想自己衡量效果,请查看基准测试工具,例如

或分析器,例如

或应用程序性能服务,例如