为什么echo比print更快?

5
PHP 中,为什么 echoprint 更快?
它们做同样的事情... 为什么一个比另一个更快?
它们是否完全做同样的事情?

1
它们不就是彼此的别名吗?你从哪里得到了其中一个比另一个更快的想法? - Jasper
Symfony创始人Fabien Potencier的一个好回答 http://fabien.potencier.org/article/8/print-vs-echo-which-one-is-faster - rpayanm
4个回答

8

echoprint基本上是一样的(技术上不同)。两者之间(几乎)唯一的区别是print将返回整数1,而echo则不返回任何值。请记住,它们实际上都不是函数,而是语言结构。当您使用echo作为函数时,可以像传递多个字符串一样传递多个参数(例如echo($var1, $var2, $var3))。

您还可以使用语法<?= $var1; ?>来缩写echo(而不是<?php echo $var1; ?>)。

至于哪个更快,有很多在线资源试图回答这个问题。PHP Benchmark得出结论:“实际上,echo和print函数具有完全相同的用途,因此在后台应用完全相同的代码。唯一需要注意的小事情是,在使用逗号分隔项目同时使用echo函数时,项目运行速度略快。”

这真的取决于您的个人偏好,因为速度上的差异(无论实际上是什么)都可以忽略不计。


我曾经写过一篇关于这个的文章,并且使用了VLD进行了基准测试,请查看:http://rakesh.sankar-b.com/2011/01/12/echo-print-which-is-fast-php/。 - Rakesh Sankar

2

打印总是返回1,这也可能是它速度较慢的原因。


1

Print有一个返回值,这是唯一的区别。

速度差异(如果有的话)非常微小,不值得考虑像这样的微观优化,也绝对不值得更新任何旧代码以将打印切换到回声。如果这是您的目标,有更好的方法可以加快网站的速度。


0
根据我的经验和知识,你错了。在循环的自动公路和超文本中,printecho更快。

哪个更快?

我正在实施一个测试,展示printecho之间的差异。

$start = microtime(1);
for($i = 0; $i < 100000; $i++)
    echo "Hello world!";

echo "echo time: " . round(microtime(1) - $start, 5);

$start = microtime(1);
for($i = 0; $i < 100000; $i++)
    print "Hello world!";

echo "print time: " . round(microtime(1) - $start, 5);

结果:

echo time: .09
print time: .04

另一个参考资料是phpbench,它证明了这一事实。

比较

现在是时候调查为什么printecho更快了。当您使用循环时,当然,php会检查echo是否有多个值要打印,但始终可以只使用一个参数进行打印,并且不需要在循环中进行检查。此外,当echo有多个值时,会出现问题,例如将它们转换为字符串并流式传输它们,我确信在大型超文本中也会出现这些问题,因为您正在强制php在打印之前进行处理。但是在像打印这样的小作业中,只有一个小字符串echo是好的(如果您考虑连接),因为它不像print那样返回任何内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接