代码之家  ›  专栏  ›  技术社区  ›  Mark Lalor

为什么回声比打印快?

  •  3
  • Mark Lalor  · 技术社区  · 15 年前

    PHP 为什么 echo 比快 print ?

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

    他们这样做吗? 确切地 同样的事情吗?

    5 回复  |  直到 7 年前
        1
  •  6
  •   Josh Leitzel    15 年前

    echo print 实际上(技术上)是一样的。两者的区别(几乎只有一点)是 打印 将返回整数 1 回声 什么也不返回。请记住,两者实际上都不是函数,而是语言构造。 回声 允许您在使用时像传递函数一样传递多个字符串(例如, echo($var1, $var2, $var3) )

    回声 也可以通过使用语法进行速记 <?= $var1; ?> 代替 <?php echo $var1; ?> )

    就速度而言,有许多在线资源试图回答这个问题。 PHP Benchmark 结论是“【i】在现实中,echo和print函数具有确切的用途,因此在后端应用完全相同的代码。需要注意的一点是,在使用echo函数的同时使用逗号分隔项时,项的运行速度会稍快一些。”

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

        2
  •  2
  •   Galen    15 年前

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

        3
  •  1
  •   Tim Fountain    15 年前

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

    速度差(如果有的话)是如此之小,以至于不值得去考虑像这样的微观优化,也绝对不值得更新任何旧代码来将打印转换为Echos。如果这是你的目标,有更好的方法来加速你的网站。

        4
  •  0
  •   Ryan Rinaldi    15 年前

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

        5
  •  0
  •   Amir Forsati    7 年前

    作为我的经验和知识, 你错了 . print 比快 echo 在回路中,Autobahn和超文本。

    哪个更快?

    我正在执行一个测试,它显示 打印 回声 .

    $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 这说明了这个事实。

    可比性

    现在是时候调查原因了 打印 比快 回声 . 当然,在使用循环时,PHP会检查echo是否有多个要打印的值,但始终打印只能使用一个参数,不需要在循环中进行检查。另外,当echo的坏处出现多个值时,比如将它们转换为字符串并进行流式处理,我相信在巨大的超文本中,这些问题也会出现,因为您强制PHP在打印之前进行处理。但在像打印这样的小任务中,只有一个小字符串echo是很好的(如果考虑连接的话),因为它不会返回类似print的任何内容。