为什么回声比打印快?

问题描述 投票:3回答:5

在PHP中,为什么echoprint更快?

他们做同样的事情......为什么一个比另一个更快?

他们做的完全一样吗?

php comparison performance printing echo
5个回答
6
投票

echoprint实际上(在技术上)不是一回事。两者之间的差异(几乎是唯一的)是print将返回整数1,而echo则不返回任何内容。请记住,它们实际上都不是函数,而是语言结构。 echo允许您在使用时传递多个字符串,就好像它是一个函数(例如,echo($var1, $var2, $var3))。

echo也可以通过使用语法<?= $var1; ?>(代替<?php echo $var1; ?>)来缩短。

至于哪个更快,有许多在线资源试图回答这个问题。 PHP Benchmark得出结论:“[i] n现实中回声和打印功能用于确切目的,因此在后端中应用完全相同的代码。需要注意的一件小事是,当使用逗号分隔项目时使用echo函数,物品运行得稍快。“

这将真正归结为您的偏好,因为速度的差异(无论它们实际是什么)都可以忽略不计。


2
投票

打印始终返回1,这也可能是它变慢的原因


1
投票

打印有返回值,这是唯一的区别。

速度差异(如果有的话)是如此微不足道,以至于不值得考虑像这样的微优化,并且绝对不值得更新任何旧代码来将打印切换到回声。如果这是您的目标,那么有更好的方法可以加快您的网站速度。


0
投票

差异在这里细分:PHP Performance: Echo & Print


0
投票

根据我的经验和知识,你错了。 print比循环高速公路和超高压的echo更快。

哪个更快?

我正在实施一项测试,显示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是否有多个要打印的值,但是print总是只能打一个参数而不需要在循环中检查它。当有多个值的回声时,糟糕的事情就会发生,比如将它们转换成字符串并将它们串流,我相信在巨大的超文本中,这些问题也会因为你在打印之前强迫php处理而产生。但是在打印这样的小作业中,只有一个小字符串回显我好(如果考虑连接),因为它不会返回任何类似打印的内容。

© www.soinside.com 2019 - 2024. All rights reserved.