[英]Which is better on performance: double quoted strings with variables or single quoted strings with concatenations?
我知道在 PHP 中在字符串周围使用单引号比使用双引号更快,因为 PHP 不需要检查单引号字符串中是否存在变量。 我的问题是哪个会表现得更好:
A) 存在变量的双引号字符串:
echo "foo bar $baz";
或者
B) 用连接变量单引号:
echo 'foo bar ' . $baz;
我在不久前工作的博客上对此进行了基准测试。 然而,当我意识到有很多变数时。 其中主要有:
总的来说,我想说你真正担心它真的没什么大不了的。 一般来说,如果您正在编写一个庞大的网站(想想 MySpace、Facebook、Flickr 等),并且通常到那时您背后有太多的硬件,单引号和双引号的事情将再次变得无关紧要,那么它只会产生明显的不同.
个人而言,我会说有,将在一个更实质性的方式(高速缓存,SQL优化,自动加载,以防止不必要的包括等)影响性能更为重要的事情。
我个人几乎每次都选择单引号,但不是为了速度。 我这样做是因为我认为它更具可读性。 这对我来说很重要。
老实说,我不认为您在寻求节省性能时需要仔细检查这个特定的约定。 但是,就其价值而言,我想我记得读过字符串中的变量比串联效率低(请注意,它可以忽略不计,在我看来不是问题)。
在这个问题上,我完全同意乔纳森·桑普森的观点,但我认为有一个解决方案比您发布的解决方案更快。 在echo
使用多个参数:
echo 'foo bar', $baz;
这仅适用于使用echo
语句时,在任何其他上下文中连接可能更好,但我在这方面力求可读性,因此我尽可能使用插值。
我在我的 Vista/php5 盒子上用计时(微时间)测试了两个循环,一个用于 ',一个用于“。
在 100 次迭代中: - 单引号:0.000139 - 双引号:0.000228
在 1000 次迭代中: - 单引号:0.002377 - 双引号:0.002056
在 2000 次迭代中: - 单引号:0.003562 - 双引号:0.010041
编辑:还有时间 echo 'Foo', $bar; 100 次迭代 = 0.000107,1000 次迭代 = 0.001381,2000 次迭代 = 0.022434。
回声 'Foo', $bar; 在 100 和 1000 次迭代中是最快的,但由于某种原因它在 2000 次迭代中最慢......?
如果没有测试(这是解决此类问题的唯一正确方法),我会说带连接的单引号字符串,因为不必解析字符串。 但它非常依赖于实现。
并且双引号字符串具有更少的视觉混乱和繁琐。 所以我会站在 Jonathan 一边说,性能差异可能没有那么大,你应该担心; 相反,采用更易于维护和在项目中保持一致的方式。
不久前我读了一篇文章,其中有人对其进行了实际测试。
结论是单引号更有效,但正如其他两个答案所指出的那样,性能差异不会大到值得担心。
这是一篇较旧的文章,最后更新于 2007 年 3 月,但它表明性能差异非常低: Dave Dash 的 PHP double vs single quote
我最近读了另一篇文章(虽然找不到了),它甚至指出在某些情况下,双引号可能比单引号更快。 不确定这是否真的正确。
所以我更关心的是你的代码的可读性。 如果您将变量放在引号内,如果它是更大的文本,则可能更难阅读/查找。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.