【问题标题】:Echo with parameters and without?带参数和不带参数的回声?
【发布时间】:2013-05-14 15:30:36
【问题描述】:

我知道以下三个语句会产生相同的输出:

echo "Hello" . "World! <br/>";
echo "Hello"; echo "World!", "<br/>";
echo "Hello", "World!", "<br/>";

但是性能差异是什么?为什么?

"String","String" 相比,像"String" . "String" 那样连接会更慢吗?

【问题讨论】:

    标签: php string concatenation echo


    【解决方案1】:

    这取决于您所说的性能...就操作数量而言,您的第一个示例是最好的(操作数量最少)...您的第二个和第三个示例几乎完全相同。

    echo "Hello" . "World! &lt;br/&gt;";HERE 的操作码

    Finding entry points
    Branch analysis from position: 0
    Return found
    filename:       /in/oYvSm
    function name:  (null)
    number of ops:  3
    compiled vars:  none
    line     # *  op                           fetch          ext  return  operands
    ---------------------------------------------------------------------------------
       3     0  >   CONCAT                                           ~0      'Hello', 'World%21+%3Cbr%2F%3E'
             1      ECHO                                                     ~0
       5     2    > RETURN                                                   1
    
    branch: #  0; line:     3-    5; sop:     0; eop:     2
    path #1: 0, 
    

    echo "Hello"; echo "World!", "&lt;br/&gt;";HERE 的操作码

    Finding entry points
    Branch analysis from position: 0
    Return found
    filename:       /in/nMufh
    function name:  (null)
    number of ops:  4
    compiled vars:  none
    line     # *  op                           fetch          ext  return  operands
    ---------------------------------------------------------------------------------
       3     0  >   ECHO                                                     'Hello'
             1      ECHO                                                     'World%21'
             2      ECHO                                                     '%3Cbr%2F%3E'
       5     3    > RETURN                                                   1
    
    branch: #  0; line:     3-    5; sop:     0; eop:     3
    path #1: 0, 
    

    echo "Hello", "World!", "&lt;br/&gt;";HERE 的操作码

    Finding entry points
    Branch analysis from position: 0
    Return found
    filename:       /in/LnPaY
    function name:  (null)
    number of ops:  4
    compiled vars:  none
    line     # *  op                           fetch          ext  return  operands
    ---------------------------------------------------------------------------------
       3     0  >   ECHO                                                     'Hello'
             1      ECHO                                                     'World%21'
             2      ECHO                                                     '%3Cbr%2F%3E'
       4     3    > RETURN                                                   1
    
    branch: #  0; line:     3-    4; sop:     0; eop:     3
    path #1: 0, 
    

    因此,您可以清楚地看到您在第二个和第三个示例中使用了一个额外的echo 操作。但在这些示例中,性能(读取速度)几乎可以忽略不计。

    【讨论】:

      【解决方案2】:

      点运算符是最快的。您可以通过将其放入循环并定时输出来测试它,如下所示:

      http://www.sitepoint.com/high-performance-string-concatenation-in-php/

      【讨论】:

      • 另外,使用逗号与 PHP 的其余部分不一致。因此,为了清楚起见,也使用点运算符。
      【解决方案3】:

      第 2 行和第 3 行是等价的。

      使用逗号会稍微快一些,因为它不使用连接。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-19
        • 2011-08-07
        • 2021-04-16
        • 2011-01-14
        • 2017-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多