哪个更快:输出缓冲区或回声

时间:2012-07-06 19:42:57

标签: php echo output-buffering

我正在写一个wordpress小部件插件。它应该输出一些看起来像这样的HTML代码

<a href="link1">link1title</a>
<a href="link2">link2title</a>
<a href="link3">link3title</a>
<a href="link4">link4title</a>
<a href="link5">link5title</a>

我正在运行一个for循环来输出2个数组的链接和标题,我可以用两种不同的方式做到这一点:

<?php for ($i = 0; $i < $x; $i++)
    echo '<a href="'.$links[$i].'">'.$titles[$i].'</a>';
?>

或者我可以使用这样的东西:

<?php ob_start();
for ($i = 0; $i < $x; $i++) {?>
    <a href="<?php echo $links[$i];?>"><?php echo $titles[$i];?></a>
<?php ob_get_flush();?>

这个例子很简单。有更多的HTML代码,涉及更多的变量。 由于在c / c ++中printf和cout之间存在速度差异,我想知道使用输出缓冲区和回声之间存在速度差异。

另外,哪一个更好用?

1 个答案:

答案 0 :(得分:3)

当然有。使用echo,您将转储到输出流。使用ob_start,您将创建一个缓冲区,然后必须将其处理(ob_start的可选参数,然后再转储到输出流。

由于第二个基本上是“做一些东西,然后做与第一个完全相同的东西”,很明显它会慢一些。

然而,如果使用得当,那么好处远大于缺点。