【问题标题】:Why is echo faster than print?为什么 echo 比 print 快?
【发布时间】:2011-04-03 23:44:14
【问题描述】:

PHP 中,为什么 echoprint 快?

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

他们完全做同样的事情吗?

【问题讨论】:

  • 他们不只是彼此的别名吗?您从哪里得到一个比另一个快的想法?
  • Symfony 的创始人 Fabien Potencier 的好回答 fabien.potencier.org/article/8/…

标签: php comparison performance printing echo


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      echo 也可以使用语法<?= $var1; ?>(代替<?php echo $var1; ?>)进行简写。

      至于哪个更快,有许多在线资源试图回答这个问题。 PHP Benchmark 得出结论:“[i] 实际上,echo 和 print 函数服务于确切目的,因此在后端应用完全相同的代码。需要注意的一件小事是,在使用逗号分隔项目时使用 echo函数,项目运行速度稍快。”

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

      【讨论】:

      【解决方案4】:

      根据我的经验和知识,你错了。在循环高速公路和超文本中,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 是否有多个要打印的值,但 print 始终只能采用一个参数,并且不需要在循环中检查。同样,当有多个 echo bad 的值出现时,比如将它们转换为字符串并将它们流式传输,我相信在巨大的超文本中这些问题也会出现,因为你在打印之前强制 php 进行处理。但是在像打印这样的小工作中,只有一个小的字符串回显我很好(如果你考虑连接的话),因为它不会返回任何像打印这样的东西。

      【讨论】:

        猜你喜欢
        • 2012-08-03
        • 2016-06-01
        • 2011-10-28
        • 1970-01-01
        • 2019-11-02
        • 2010-12-11
        • 2015-07-24
        相关资源
        最近更新 更多