我知道在PHP中使用字符串周围的单引号比使用双引号要快,因为PHP不需要检查单引号字符串中的变量是否存在。我的问题是哪个会表现得更好:
A)带有变量的双引号字符串:
echo "foo bar $baz";
或
B)单引号带有连接变量:
echo 'foo bar ' . $baz;
答案 0 :(得分:6)
我在前一段时间的博客(link)上对此进行了基准测试。然而,正如我已经意识到有很多变数。其中最主要的是:
总而言之,对于你来说实际上担心它并不是什么大不了的事。一般来说,如果你正在写一个巨大的网站(想想MySpace,Facebook,Flickr等),它只会产生显着的差异,而且通常到那时你有很多硬件在后面,单一与双引号的东西再次无关紧要
就我个人而言,我认为远更重要的事情会以更实质的方式影响性能(缓存,SQL优化,自动加载以防止不必要的包含等)。
我个人几乎每次都会选择单引号,但不是速度。我这样做是因为我觉得它更具可读性。对我来说这很重要。
答案 1 :(得分:3)
说实话,我认为在寻求保存性能时,你不需要仔细审查这个特定的惯例。但是,对于它的价值,我想我会记得读到字符串中的变量效率较低(请注意,它可以忽略不计,在我看来不是问题)而不是连接。
答案 2 :(得分:3)
我在这个问题上全心全意地同意Jonathan Sampson,但我认为有一个解决方案比你发布的解决方案更快。在echo
使用多个参数:
echo 'foo bar', $baz;
这仅适用于使用echo
语句时,在任何其他上下文中,连接可能更好,但我在这方面力求可读性,因此我尽可能使用插值。
答案 3 :(得分:2)
我在我的Vista / php5盒子上测试时间(microtime)有两个循环,一个用于'和一个用于'。
100次迭代: - 单引号:0.000139 - 双引号:0.000228
1000次迭代: - 单引号:0.002377 - 双引号:0.002056
2000次迭代: - 单引号:0.003562 - 双引号:0.010041
编辑: 也定时回声'Foo',$ bar; 100次迭代= 0.000107,1000次迭代= 0.001381,2000次迭代= 0.022434。
回声'Foo',$ bar;是100次和1000次迭代中最快的,但由于某种原因,它在2000次迭代中最慢......?答案 4 :(得分:0)
没有测试(这是解决此类问题的唯一正确方法)我会说单引号字符串连接,因为字符串不必解析。但它非常依赖于实现。
双引号字符串具有较少的视觉混乱和残留。所以我和乔纳森一起说,表现差异可能并不那么重要,你应该担心它;相反,采用在项目中更容易维护和一致的方式。
答案 5 :(得分:0)
我前一段时间读了一篇文章,其中有人实际测试了它。
结论是单引号效率更高,但正如其他两个答案所指出的那样,性能差异不会太大而无法担心。
答案 6 :(得分:0)
以下是一篇较旧的文章,最后一篇文章于2007年3月发布,但它显示效果差异非常小: PHP double versus single quotes by Dave Dash
我最近阅读了另一篇文章(虽然不能再找到它),甚至声称在某些情况下,双引号可能比单个qoutes更快。不确定这是否真的正确。
所以我更关心的是代码的可读性。如果你把变量放在引号内,那么如果它是一个更大的文本可能更难阅读/查找。