使用PHP,在for循环中使用++$i
而不是$i++
会有所不同吗?我曾经读过++$i
更快的地方,因为不需要存储前一个值,因为$i++
返回增量前的值,所以在递增之前必须存储该值。
我需要多少个循环才能感受到显着的速度提升?像这个例子:
for($i = 0; $i < 10000000000; ++$i)
而不是:
for($i = 0; $i < 10000000000; $i++)
我总是对此感到好奇,所以我很期待你的回答。
答案 0 :(得分:4)
让我通过引用“银河系漫游指南”中的一段话来回答你:
问:如果我让它直接翻过你,你知道推土机会受到多大的伤害吗?
A:根本没有!
从语用上讲,在$i++
循环中使用++$i
或for
之间没有性能差异;如果你使用“错误的”,性能不会受到影响。
如果你想写++$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,但你真的不应该考虑这样的东西或循环更快倒退等等。如果是这种情况,它将很快被“修复”,并且在您完成所有工作后,您最终会得到不可读且非常奇怪的代码,这很容易破解。