我用一些简单的东西分析了 for、while和do-while循环:
while ($var < 1000000) {
++$var;
}
do {
++$var;
} while ($var < 1000000);
for ($var = 0; $var < 1000000; ++$var) {
//do nothing
}
通过比较循环前后的 microtime()。
do-while 循环在很大程度上是最快的循环。do-while实际上比while快了将近一半。我知道它们用于不同的目的(while在循环执行之前检查条件并且do-while至少执行一次)。
我知道普遍的共识是,while 循环不受欢迎,而 do-while 则更是如此。
我的问题是为什么?考虑到 PHP 应用程序中使用了多少个 for 循环,不应该更多地使用do-while吗?即使使用if语句在循环执行之前检查条件,性能提升也是相当可观的。
我目前接受的答案是代码易读性是嫌疑犯。
10 年编辑: 10 年前,我在一次工作面试中被问到这个问题。我带着错误的看法进入面试,即不赞成 while 循环。我从我以前的工作中学到了这一点,根据我上级的指示,代码中不允许使用 while 循环。
面试与管理层进行得很顺利,然后我被交给了首席程序员,他问我 PHP 中最快的循环是什么,我弄错了,我没有得到这份工作,这就是为什么我问关于 SO 的问题.
10年的经验教会了我很多。
- while 循环很好(认为我不是被教过的,这很可笑)
- 微优化是真正的邪恶(配置文件代码,专注于瓶颈)
- 10 年来,我从未为速度重写过循环。然而,我重写了循环内的逻辑,这始终是真正的瓶颈。
- 在编程领域有很多强烈但基本上不正确的观点。坚持到底,阅读、实验和提问,向更好的程序员学习敞开心扉,不要害怕犯错。