PHP速度 - 许多回声与构建字符串

时间:2010-06-05 21:10:33

标签: php string performance echo

想知道是否有人知道这些方法中的任何一种是否会更快地产生输出:

Method 1
for ($i=1;$i<99999;$i++) {
echo $i, '<br>';
}

Method 2
for ($i=1;$i<99999;$i++) {
$string .= $i . '<br>';
}
echo $string;

感谢您提供任何意见。

4 个答案:

答案 0 :(得分:4)

方法1使用更少的内存和CPU并且“更快”(减少服务器负载) 但输出瓶颈很可能是浏览器下载速度。

如果您不缓冲输出,浏览器可以更快地开始下载样式表,图像等  (当您的脚本正在等待某些查询结果时)

查看PHP Optimalizationhttp://code.google.com/speed/articles/optimizing-php.html上的答案以获取更多提示。

答案 1 :(得分:3)

方法1似乎更快。方法2将为循环的每次迭代吐出一堆CONCAT操作码,并且在你准备好发送它之前,将在内存中构建非常长的字符串。另一方面,方法1将是每个循环两个ECHO操作码,然后PHP /您的网络服务器可以在完成之前将内容刷新到客户端,如果它想要的话。

当然,如果您关注微优化,那么通过使用操作码缓存,缓存代理或类似hiphop之类的东西,您将获得更好的性能。

答案 2 :(得分:0)

我已经读过,最快的方法是启用output buffering并做许多回声。 但是,我没有确认这一说法的基准。

无论如何,我认为这是微优化领域。差异可能是可衡量的,但微不足道。正如@Coronatus上面评论的那样,如果您的应用对性能敏感,那么您将不会使用PHP!

答案 3 :(得分:0)

如果您想进行微优化,请将$ i ++改为++ $ i