PHP字符串文本和编译器优化
可能重复:PHP字符串文本和编译器优化,php,optimization,php-opcode,Php,Optimization,Php Opcode,可能重复: 我想知道当定义不包含变量的字符串时使用“s时,与不执行额外解析的”相比,PHP代码的性能是否会受到影响 例如,PHP将尝试解析由“定义的字符串中的变量,而不是” $myString = "Greetings earthlings!"; echo '$myString'; //literally outputs the string '$myString' echo "$myString"; //literally outputs the string "Greetings eart
我想知道当定义不包含变量的字符串时使用
“
s时,与不执行额外解析的”
相比,PHP代码的性能是否会受到影响
例如,PHP将尝试解析由“
定义的字符串中的变量,而不是”
$myString = "Greetings earthlings!";
echo '$myString'; //literally outputs the string '$myString'
echo "$myString"; //literally outputs the string "Greetings earthlings"
所以我的问题是,我一直在写这样的代码:
echo "Greetings earthlings";
我是不是在浪费时间?或者PHP是否足够智能/优化,以了解我的真正意思:
?可以运行基准来查看。我对PHP4进行了测试,发现字符串连接比嵌入变量快得多(一个数量级?我记不清了)。相比之下,双引号中的纯字符串只比单引号快一点点
但这是针对PHP4的。后来我对PHP5运行了相同的测试,性能上的差异几乎可以忽略不计 可以运行基准测试来查看。我对PHP4进行了测试,发现字符串连接比嵌入变量快得多(一个数量级?我记不清了)。相比之下,双引号中的纯字符串只比单引号快一点点 但这是针对PHP4的。后来我对PHP5运行了相同的测试,性能上的差异几乎可以忽略不计 对的一点工作告诉我这两个程序编译为相同的字节码(使用PHP5.3): 结论:现代版本的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
compiled vars: !0 = $world
line # * op fetch ext return operands
---------------------------------------------------------------------------------
1 0 > CONCAT ~0 'Hello+', !0
1 ECHO ~0
2 > RETURN null
不过,我不想说这有什么意义。实际的性能差异很可能是微不足道的。一点工作告诉我这两个程序编译成相同的字节码(使用PHP5.3):
结论:现代版本的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
compiled vars: !0 = $world
line # * op fetch ext return operands
---------------------------------------------------------------------------------
1 0 > CONCAT ~0 'Hello+', !0
1 ECHO ~0
2 > RETURN null
不过,我不想说这有什么意义。性能上的实际差异很可能是微不足道的。是的,但它太小了,不值得考虑。网络上的某个地方有一个差异的基准。但你可以在不到一分钟的时间内完成自己的任务。是的,但是它太小了,这不是一个真正的考虑。网络上的某个地方有一个差异的基准。但你可以在不到一分钟的时间内完成自己的任务+1 QED,此答案应与原始副本合并。。非常好+1 QED,这个答案应该与原始副本合并。。非常好+1,没错。谢谢你的输入+1,真的。谢谢你的意见