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)
?
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)
不过,我会毫不犹豫地称之为重要.实际上,现实世界的性能差异很可能是微不足道的.