Php 串联、多参数还是sprintf?

Php 串联、多参数还是sprintf?,php,optimization,Php,Optimization,我正在努力优化我的PHP代码,并发现您可以通过这些方式加快回音速度-确切地说,您可以替换echo“用户名是$name”。".";带有: echo'用户的名称为'.$name' echo“用户的名称是,$name,” echo sprintf(“用户名称为%s,$name”) 哪一个最快?我不仅想看基准测试,如果可能的话,还想看一些技术解释。首先,这是微优化,你可能更愿意花钱购买更快的服务器和开发更多的产品,而不是花费数小时的微优化。然而,根据以下结果: sprintf()比双引号慢138.6

我正在努力优化我的PHP代码,并发现您可以通过这些方式加快回音速度-确切地说,您可以替换
echo“用户名是$name”。".";带有:

  • echo'用户的名称为'.$name'
  • echo“用户的名称是,$name,”
  • echo sprintf(“用户名称为%s,$name”)

哪一个最快?我不仅想看基准测试,如果可能的话,还想看一些技术解释。

首先,这是微优化,你可能更愿意花钱购买更快的服务器和开发更多的产品,而不是花费数小时的微优化。然而,根据以下结果:

sprintf()比双引号慢138.68%(慢1.4倍)

sprintf()比单引号慢163.72%(慢1.6倍)


上述评论是相关的。有更好的方法来优化代码


也就是说,优化字符串的最佳方法是将字符串弹出到列表中,然后连接列表。请看一看作为一个良好的起点。

使用
sprintf()
的变体肯定是最慢的,因为PHP中的函数调用非常昂贵,
sprintf()
必须解析格式字符串。使用类似
echo“abc”、$n、“xyz”
实际上编译为三个单一的
ZEND_ECHO
操作码,这意味着输出层被多次调用,这可能非常慢,具体取决于使用的SAPI。无论您使用的是
echo“abc$n xyz”,都没有多大区别
回显“abc”$N“xyz”因为它们都编译为共分类操作。

而且您还没有发现回送一系列参数(用逗号分隔)比回送一系列用点连接的值快皮秒?这真是微观优化;您是否已经优化了脚本中所有非常昂贵的元素?对其进行基准测试,您就知道了。同意这个答案。至于双引号和单引号以及连接运算符,我只建议使用适合您的代码风格的标准化方法。也就是说,单引号比双引号优越14%。我已经不喜欢sprintf(),因为我认为它会混淆。我很高兴看到我喜欢的方法也更快。提供的结果不正确(micro optimization.com的错误)2。单引号/双引号上的结论不正确,提供的前两个版本表现不同,
echo“用户名为“$name”
正在创建一个唯一的回显字符串,
回显“用户名为”,$name,”
只使用了一次“echo”关键字,但这是分别使用参数3调用echo 3次的缩写。根据所使用的SAPI(cli、apache、fcgi等),echo的行为有所不同