PHP字符串文字和编译器优化

sty*_*972 1 php optimization php-opcode

可能重复:
在php中,单引号与双引号是否有性能优势?

我想知道如果PHP代码中使用时,需要一个性能命中"定义字符串,当s 不包含变量相比,'在不进行额外的解析.

例如,PHP将尝试解析由"但未定义的字符串内的变量'.

$myString = "Greetings earthlings!";
echo '$myString'; //literally outputs the string '$myString'
echo "$myString"; //literally outputs the string "Greetings earthlings"
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,我一直在编写这样的代码:

echo "Greetings earthlings";
Run Code Online (Sandbox Code Playgroud)

我一直在浪费周期吗?或者是PHP智能/优化的不够了解我真正的意思是:

echo 'Greetings earthlings';
Run Code Online (Sandbox Code Playgroud)

dus*_*uff 5

VLD的一些工作告诉我两个程序都编译成相同的字节码(使用PHP 5.3):

line     # *  op                           fetch          ext  return  operands
---------------------------------------------------------------------------------
   2     0  >   ECHO                                                     'Hello+world'
   3     1    > RETURN                                                   1
Run Code Online (Sandbox Code Playgroud)

结论:现代版本的PHP完全没有区别.没有任何.使用对你最好的方法.


但是,有以下区别echo "Hello $world":

compiled vars:  !0 = $world
line     # *  op                           fetch          ext  return  operands
---------------------------------------------------------------------------------
   1     0  >   ADD_STRING                                       ~0      'Hello+'
         1      ADD_VAR                                          ~0      ~0, !0
         2      ECHO                                                     ~0
         3    > RETURN                                                   null
Run Code Online (Sandbox Code Playgroud)

而且echo "Hello " . $world:

compiled vars:  !0 = $world
line     # *  op                           fetch          ext  return  operands
---------------------------------------------------------------------------------
   1     0  >   CONCAT                                           ~0      'Hello+', !0
         1      ECHO                                                     ~0
         2    > RETURN                                                   null
Run Code Online (Sandbox Code Playgroud)

不过,我会毫不犹豫地称之为重要.实际上,现实世界的性能差异很可能是微不足道的.