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


Which is faster: Output buffer or echo

我正在编写一个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之间存在速度差,我想知道使用输出缓冲区和echo之间是否存在速度差。

另外,哪一个更好用?

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

由于第二个基本上是"做一些事情,然后做与第一个完全相同的事情",很明显它会更慢。

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