php - 性能方面的插值(直接插入字符串)VS拼接

标签 php string performance string-concatenation

<分区>

组合 2 个字符串时,下面哪个方法更快?为什么它可以运行得更快?

PHP代码:

$str1 = 'Hello';
$str2 = 'World';

方法一:

$txt = $str1.$str2;

方法二:

$txt = "$str1$str2";

最佳答案

操作码对比

代码:

$a=1; 
$b=2; 
echo "$a$b";

操作码:

   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

代码:

$a=1; 
$b=2; 
echo $a.$b;

操作码:

   1     0  >   ASSIGN                                                   !0, 1
         1      ASSIGN                                                   !1, 2
         2      CONCAT                                           ~2      !0, !1
         3      ECHO                                                     ~2
         4    > RETURN                                                   null

中间结论

连接少了一个操作码,庆幸!不一定,实际的运行时性能还是要测试的。

要查看任何一段代码生成的操作码,请查看很棒的 vld extension

运行时性能

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

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

结论

串联速度更快,但不太可能影响任何特定应用程序的性能。

关于php - 性能方面的插值(直接插入字符串)VS拼接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13553402/

相关文章:

java - 如何优化缓慢的 Mysql SELECT 查询?

javascript - 何时加载我的 JavaScript?

javascript - 简单的前端 Controller 导致 php 中的 css 和 javascript 损坏

php - 如何在 woocommerce_email_headers Hook 中获取订单 ID

php - Crystal 报表,mysql用php建网站,请问可以吗?

java - Java中的XML字符串解析

regex - 检查当前单词之前是否有多个单词

java - 从字符串中获取原始字节数组

c - Linux下的硬件读写函数

php - 如何在 mySql 上加入 2 个表?