之间是否有速度差异,比如说:
$ newstring =“$ a和$ b出去看$ c”;
和
$ newstring = $ a。 “和”。 $ b。 “出去看看”。 $ C;
如果有,为什么?
答案 0 :(得分:16)
取决于在PHP版本上,如果您将其编写为:
$newstring = $a . ' and ' . $b . ' went out to see ' . $c;
$a
,$b
和$c
的类型,如下所示。
当您使用"
时,PHP会解析字符串以查看其中是否使用了任何变量/占位符,但如果仅使用'
PHP则将其视为一个简单的字符串而不再进一步处理。所以通常'
应该更快。至少在理论上。在实践中,你必须测试。
结果(以秒为单位):
a, b, c are integers:
all inside " : 1.2370789051056
split up using " : 1.2362520694733
split up using ' : 1.2344131469727
a, b, c are strings:
all inside " : 0.67671513557434
split up using " : 0.7719099521637
split up using ' : 0.78600907325745 <--- this is always the slowest in the group. PHP, 'nough said
将此代码与Zend Server CE PHP 5.3一起使用:
<?php
echo 'a, b, c are integers:<br />';
$a = $b = $c = 123;
$t = xdebug_time_index();
for($i = 1000000; $i > 0; $i--)
$newstring = "$a and $b went out to see $c";
$t = xdebug_time_index() - $t;
echo 'all inside " : ', $t, '<br />';
$t = xdebug_time_index();
for($i = 1000000; $i > 0; $i--)
$newstring = $a . " and " . $b . " went out to see " . $c;
$t = xdebug_time_index() - $t;
echo 'split up using " : ', $t, '<br />';
$t = xdebug_time_index();
for($i = 1000000; $i > 0; $i--)
$newstring = $a . ' and ' . $b . ' went out to see ' . $c;
$t = xdebug_time_index() - $t;
echo 'split up using \' : ', $t, '<br /><br />a, b, c are strings:<br />';
$a = $b = $c = '123';
$t = xdebug_time_index();
for($i = 1000000; $i > 0; $i--)
$newstring = "$a and $b went out to see $c";
$t = xdebug_time_index() - $t;
echo 'all inside " : ', $t, '<br />';
$t = xdebug_time_index();
for($i = 1000000; $i > 0; $i--)
$newstring = $a . " and " . $b . " went out to see " . $c;
$t = xdebug_time_index() - $t;
echo 'split up using " : ', $t, '<br />';
$t = xdebug_time_index();
for($i = 1000000; $i > 0; $i--)
$newstring = $a . ' and ' . $b . ' went out to see ' . $c;
$t = xdebug_time_index() - $t;
echo 'split up using \' : ', $t, '<br />';
?>
答案 1 :(得分:6)
可能存在速度差异,因为它有两种不同的语法。你需要问的是差异是否重要。在这种情况下,不,我认为你不必担心。差异可以忽略不计。
我建议你在视觉上做任何最有意义的事情。 “$a and $b went out to see $c
”看起来有点令人困惑。如果你想走那条路,我建议围绕你的变量大括号:“{$a} and {$b} went out to see {$c}
”。
答案 2 :(得分:2)
我做了一个快速的基准测试,正如其他人所说,结果非常不一致。我没有注意到使用单引号而不是双引号的性能提升。我猜这一切都归结为偏好。
您可能希望坚持使用一种类型的引用来编写您的编码风格,如果您这样做,请选择双引号。替换功能比您想象的更频繁。
我把基准代码on github。
答案 3 :(得分:2)
如果您担心此级别的字符串连接速度,则使用的是错误的语言。在C中为这个用例编译一个应用程序,并在PHP脚本中调用它,如果这个真的是一个瓶颈。
答案 4 :(得分:1)
是的,但
之间的差异可以忽略不计$newstring = "$a and $b went out to see $c";
和
$newstring = $a . " and " . $b . " went out to see " . $c;
如果您使用:
$newstring = $a . ' and ' . $b . ' went out to see ' . $c;
差异会稍微大一点(但可能仍然可以忽略不计),原因是,如果我没记错(我可能错了),PHP会扫描并解析变量和特殊值的双引号内的内容字符(\ t,\ n等)和使用单引号时,它不会解析变量或特殊字符,因此速度可能略有增加。
答案 5 :(得分:1)
为什么不测试它,并比较差异?数字不是谎言,如果你发现一个表现得比另一个好,那么你应该问为什么。
答案 6 :(得分:-2)
没有区别,期间。 ;)