Php 性能方面的插值(直接插入字符串)与串联
下面哪个方法在组合两个字符串时更快?为什么它能跑得更快 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
$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版本是什么?