为什么回声比打印快?

时间:2010-08-25 21:57:30

标签: php comparison performance printing echo

PHP 中,为什么echoprint更快?

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

他们是否完全

5 个答案:

答案 0 :(得分:6)

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

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

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

这些差异在此处细分:PHP Performance: Echo & Print

答案 4 :(得分: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是否有多个值要打印,但始终打印只能使用一个参数,因此不需要在循环中进行检查。同样,当有多个回声值通过坏事件时,例如将它们转换为字符串并流式传输它们,我相信在巨大的超文本中也会出现这些问题,因为您是在打印前迫使php处理。但是在诸如打印之类的小型作业中,只有一个很小的字符串回显是可以的(如果您考虑串联),因为它不会返回任何类似print的信息。