Php 性能方面的插值(直接插入字符串)与串联

Php 性能方面的插值(直接插入字符串)与串联,php,string,performance,string-concatenation,Php,String,Performance,String Concatenation,下面哪个方法在组合两个字符串时更快?为什么它能跑得更快 PHP代码: $str1 = 'Hello'; $str2 = 'World'; 方法1: $txt = $str1.$str2; 方法2: $txt = "$str1$str2"; 操作码比较 代码: 操作码: 1 0 > ASSIGN !0, 1 1 ASSIGN

下面哪个方法在组合两个字符串时更快?为什么它能跑得更快

PHP代码:

$str1 = 'Hello';
$str2 = 'World';
方法1:

$txt = $str1.$str2;
方法2:

$txt = "$str1$str2";

操作码比较

代码:

操作码:

   1     0  >   ASSIGN                                                   !0, 1
         1      ASSIGN                                                   !1, 2
         2      ADD_VAR                                          ~2      !0
         3      ADD_VAR                                          ~2      ~2, !1
         4      ECHO                                                     ~2
         5    > RETURN                                                   null
   1     0  >   ASSIGN                                                   !0, 1
         1      ASSIGN                                                   !1, 2
         2      CONCAT                                           ~2      !0, !1
         3      ECHO                                                     ~2
         4    > RETURN                                                   null
代码:

操作码:

   1     0  >   ASSIGN                                                   !0, 1
         1      ASSIGN                                                   !1, 2
         2      ADD_VAR                                          ~2      !0
         3      ADD_VAR                                          ~2      ~2, !1
         4      ECHO                                                     ~2
         5    > RETURN                                                   null
   1     0  >   ASSIGN                                                   !0, 1
         1      ASSIGN                                                   !1, 2
         2      CONCAT                                           ~2      !0, !1
         3      ECHO                                                     ~2
         4    > RETURN                                                   null
中间结论

串联少了一个操作码,高兴吧!不是真的,我们仍然需要测试实际的运行时性能

要查看由任何代码段生成的操作码,请查看

运行时性能

在工作站上运行超过0.5m次迭代(平均超过10次):

  • 内联:0.9793s
  • 串联:0.9252s
结论


连接速度更快,尽管它不太可能影响任何特定应用程序的性能。

构建一个基准测试并自己测试它。您如何知道一个
CONCAT
比两个
ADD_VAR
s快的可能副本?从哪里可以得到这样的操作码打印?运行时性能测试证实了@MadaraUchiha@Gumbo。什么您使用的php版本是什么?