PHP,单引号或双引号中哪个更快? [复制]
Posted
技术标签:
【中文标题】PHP,单引号或双引号中哪个更快? [复制]【英文标题】:What is faster in PHP, single or double quotes? [duplicate] 【发布时间】:2011-06-19 18:07:19 【问题描述】:可能重复:Is there a performance benefit single quote vs double quote in php?
单引号或双引号哪个更快,为什么?
另外,使用这两种方法有什么好处?
【问题讨论】:
没关系,哪个更快 “To go fast, do less.” 这个问题是在没有适当研究的情况下匆忙提出的,也没有解释我的问题背后的原因。它很旧,似乎正在吸引负面因素。要求删除问题是否合适,或者我是否应该放弃它并接受我问的问题很糟糕的事实? 由于有人对您的问题表示赞同,因此 很难将其删除。 【参考方案1】:我会说单引号更快,因为它们不需要 Shift ;)
不同的引号对变量输出和转义字符有影响。单引号内的内容按原样处理,不解释转义字符和变量。双引号解释变量值并转义特殊字符,如换行符 (\n
)。
【讨论】:
+0 表示好答案,+1 表示换档键。 不,只有一个很好的老式普通美国英语键盘。我也喜欢单引号不移位【参考方案2】:您是否每秒处理 1000 条字符串?如果没有,你真的不应该太担心。
如果要使用字符串插值(使用变量、数学等),请使用双引号
你也应该努力保持一致。
我们应该忘记小的效率,比如大约 97% 的时间:过早优化是万恶之源。
Donald Knuth
【讨论】:
“你也应该努力保持一致”... +1 为那个花絮。 为了保持一致,我经常编写像 'i have ' 这样的代码。 $计数。 '事物' 。 “\n” .. 但这似乎比“我有 $count 个东西\n”更混乱。我想这并不重要,只要你以后能读到就行了。【参考方案3】:取决于你想做什么。我刚刚做了一些基准测试并用 5 个测试用例测试了字符串赋值:双引号 + 变量、双引号、双引号和字符串追加、单引号和带字符串追加的单引号。
我的测试代码。一百万个循环。字符串赋值。
<?php
$start = microtime(true);
$str = "";
for($i = 0; $i<1000000; $i++)
$str = "hello $i";
$end = microtime(true);
echo $end - $start;
结果:
没有变量的单引号和双引号字符串同样快。 (每个都在 0.08 左右回响)。 带有变量连接的单引号和双引号字符串大致相同,但比没有变量要慢。 (每个都在 0.17-.20 左右回响) 字符串中带有变量的双引号最慢(大约 .20-.25)
所以单/双并不重要,但似乎字符串连接比变量替换更快。
【讨论】:
【参考方案4】:查看字符串@phpbench 的双引号 (") 和单引号 (') 的性能比较。
结论:“在今天的 PHP 版本中,这个论点似乎在两边都得到了满足。让大家和谐地团结起来吧!”
【讨论】:
+1。我不得不听另外两个开发人员告诉我使用单引号对性能如此重要。我编写了自己的基准测试脚本,向他们展示了它实际上是多么微不足道。我的意思是,微秒......来吧。很高兴也有这个参考。 @sberry2A 你和 Marcin 的 php 板凳一样错了。与其编写自己的基准测试脚本,不如对代码进行分析,然后找出对性能真正很重要的问题。这种语言真的很受业余开发者的困扰。【参考方案5】:至于速度,唯一的正确答案是根本不用担心。时期。 差异,即使你找到一个,根本不重要。要关心速度,人们应该了解整个画面,而不是它的一个像素。使您的应用程序更快、更高效是一项伟大而复杂的任务。但这不能通过问“哪个更快”的问题来完成。 如果您真的对此感到担忧,请从了解 profiling 是什么开始。
至于优点,手册页解释是最好的学习地点:http://php.net/types.string 不过,这并不是真正的优势,而是用例。
【讨论】:
我同意抢先式优化通常很糟糕,并且单引号和双引号字符串之间的速度差异非常小。但在正确的情况下,即使是很小的差异也会产生影响,我想你忘记了一些提出这个问题的人可能会面临这样的情况。【参考方案6】:如果不需要处理其中的文本,那么单个更快。
【讨论】:
我不知道为什么这被否决了。这是对所提出问题的唯一实际正确回答。其他所有答案都说“没关系”,虽然这是真的,但不能回答问题。 另外请记住,这个答案可能引用了 PHP 5.2,其中性能差异更加明显。在 > 5.3 中,在大多数情况下,我们所说的时差不到百分之一。【参考方案7】:单引号通常更快,并且所有引用的内容都被视为纯字符串,
喜欢
echo 'anyting else ? $something';
>> anything else? $something
PHP 不会使用额外的处理来解释单引号内的内容
但是,与双引号相比,PHP 将替换 $something 将其分配的值
$something = 'yup';
echo "anyting else ? $something";
>> anything else ? yup
【讨论】:
即使是单引号中的字符串也需要一些解释...带有 ' 或 \ 的字符串,即使在单引号中,也需要解释以正确处理这些字符...并且没有速度明显不同。 在给出这个答案时可能是这种情况,但今天单引号和双引号在性能方面的差异可以忽略不计,除非您在循环中处理数百万个字符串。以上是关于PHP,单引号或双引号中哪个更快? [复制]的主要内容,如果未能解决你的问题,请参考以下文章