作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
由于我的研究使我相信 for
循环是 PHP 中最快的迭代结构...为了更清楚地说明,您认为以下哪一个会更快?
for ($i = 0; $i < count($myLargeArray); $i++ ) {
echo myLargeArray[$i];
}
$count = count($myLargeArray);
for ($i = 0; $i < $count; $i++ ) {
echo myLargeArray[$i];
}
我的逻辑是,在示例一中的每次迭代中,在每次迭代中访问 myLargeArray 的长度比在示例二中访问简单整数值的计算成本更高。这是正确的吗?
最佳答案
第一种方法较慢,因为必须在循环的每次迭代中调用 count()
函数。 count()
方法本身相当快,但调用该函数仍然存在一些开销。通过将其移出循环,您将执行所谓的“loop invariant code motion ”,或者有时是“提升”。
有一整个family of optimizations像这样的知识很有趣。
话虽如此,但过分强调这一点是没有好处的。在您的示例中,回显输出的 I/O 可能是您通过“优化”节省的 10 倍。如果您在循环内执行任何其他操作,则优化的意义会越来越小。
我不想成为一个扫兴的人,但对于 90% 以上的代码来说,性能不是问题。尤其是当您谈论 Web 应用程序时,这些应用程序一开始就有超过 90% 的 I/O。
不过,当您认为应该归咎于您的代码时,您应该:
您几乎总会发现需要改进缓存策略和数据库优化(这只是另一种方式的 I/O 优化),而不是摆弄代码。
关于php - PHP 中的 FOR 循环性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13466268/
我是一名优秀的程序员,十分优秀!