多少循环,直到++ $ i击败$ i ++

时间:2013-12-02 12:18:46

标签: php loops

使用PHP,在for循环中使用++$i而不是$i++会有所不同吗?我曾经读过++$i更快的地方,因为不需要存储前一个值,因为$i++返回增量前的值,所以在递增之前必须存储该值。

我需要多少个循环才能感受到显着的速度提升?像这个例子:

for($i = 0; $i < 10000000000; ++$i)

而不是:

for($i = 0; $i < 10000000000; $i++)

我总是对此感到好奇,所以我很期待你的回答。

3 个答案:

答案 0 :(得分:4)

让我通过引用“银河系漫游指南”中的一段话来回答你:

  

问:如果我让它直接翻过你,你知道推土机会受到多大的伤害吗?

     

A:根本没有!

从语用上讲,在$i++循环中使用++$ifor之间没有性能差异;如果你使用“错误的”,性能不会受到影响。

如果你想写++$i,因为你觉得它看起来更好或更好地传达了你希望它拥有的意义,那么无论如何都要这样做;但是对于任何一种写作方式都没有相关的客观论据。

答案 1 :(得分:2)

我试过做一些测试,但差异是如此随机(取决于你的计算机负载)和低,所以可以忽略。如果您愿意,可以尝试自己运行此测试。

<?php
  $start=microtime(true); // start timer

  for($i = 0; $i < 10000000000; ++$i) {

  }

  $end=microtime(true); // end timer
  echo $totaltime=$end-$start; // echo results
?>

在我看来,这种微观优化是浪费时间,可能会导致代码中出现一些难以发现的错误,所以要小心。

过早优化是所有邪恶的根源 - 唐纳德克努特

答案 2 :(得分:0)

++ $ i在使用前增加数量,使用后$ i ++将增加。

使用它后,你几乎总是期望$ i增加。我从来不需要使用++ $ i。 它应该更快,因为它比$ i ++少1,但你真的不应该考虑这样的东西或循环更快倒退等等。如果是这种情况,它将很快被“修复”,并且在您完成所有工作后,您最终会得到不可读且非常奇怪的代码,这很容易破解。