Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP性能:追加字符串与预加字符串_Php_Performance_String - Fatal编程技术网

PHP性能:追加字符串与预加字符串

PHP性能:追加字符串与预加字符串,php,performance,string,Php,Performance,String,哪个性能更好:($longstring.$longstring)$长串,或$longstring。($longstring.$longstring)?PHP的连接运算符是左关联还是右关联?它的关联性是最优的,还是应该用括号覆盖它的关联性?这真的,真的不重要。差异最多只有几毫秒 按照最适合您的编码风格和未来的可维护性来编写它。正如Pekka所说,这真的不重要,我认为没有任何关于它的严肃基准。如果你真的想知道的话,你应该试试看 至于结合性,我认为最常见的concat函数是从左到右 两者之间应该没有区

哪个性能更好:
($longstring.$longstring)$长串
,或
$longstring。($longstring.$longstring)
?PHP的连接运算符是左关联还是右关联?它的关联性是最优的,还是应该用括号覆盖它的关联性?

这真的,真的不重要。差异最多只有几毫秒


按照最适合您的编码风格和未来的可维护性来编写它。

正如Pekka所说,这真的不重要,我认为没有任何关于它的严肃基准。如果你真的想知道的话,你应该试试看

至于结合性,我认为最常见的concat函数是从左到右


两者之间应该没有区别。两者都首先为($longstring.$longstring)分配额外的2n字符串,然后为整个事件分配额外的3n字符串。帕伦斯让我困惑,因为他们被认为传达了一些意义,但在这种情况下,他们只是在那里,因为你认为它更快。如果两个组都没有什么特别之处,
$s1$s2$最好是s3

出于性能原因,对如此微小的细节进行微观管理是浪费时间。正如佩卡所说,它在速度上产生了难以置信的微小差异。你也可以花同样的时间去寻找能够显著提高性能的东西


<>编辑:如果字符串真的很长并且真的很多,并且减慢请求的真实性,你应该考虑传递它们而不创建一个字符串。保留它们的一个数组,然后输出或存储它们而不进行串联。

$x$是的$z
($x.$y)相同$z

但是,这两种方法都无法获得性能。就像:

// ($x . $y) . $ z
$tmp = $x . $y;
return $tmp . $z;
vs

在这两种情况下,发生的连接数量相同。如果一种方法更快(但两者都不是),那么它将取决于
$x
$y
$z
的长度。(也就是说,将短字符串附加到长字符串,还是将长字符串附加到短字符串,这确实是您要问的问题。如果不进行测试,我会说差异是微不足道的。)


现在,它们是不同的:
$x.=$y
$x=$y$x
。第一个是单一的
ASSIGN\u CONCAT
append操作,它可能比预结束(
CONCAT
ASSIGN
)快得多。请注意,
$x=$x$y
,虽然在功能上等同于
$x.=$y
,但也是两个操作。因此,这种类型的追加与前置会有相同的性能差异(如果有的话)。

这是否重要取决于
$longstring
的大小,我认为:)@ppalka我认为很难,即使是兆字节大的CloseVoting也不是因为太本地化,因为这会产生影响的场景非常狭窄和特殊,通常不适用于互联网的全球受众,可能包括OP。如果这在您的项目中很重要,不要使用PHP。@Gordon我问这个问题不是因为我想进行微优化,而是因为我想知道PHP如何处理字符串连接。我不是想“改变现状”,我是想变得开明。然后你可能想从你的问题中删除询问绩效的部分,因为从绩效角度看,在实践中,99%以上的绩效可以忽略不计。我在回答中插入了一个小的澄清。请注意,您的问题实际上归结为将大字符串附加到小字符串是否更快,反之亦然,因为这两种方法之间的实际操作是相同的。如果你要做基准测试,你可能会考虑这一点。不过,我大体上同意这样一种共识,即除了满足自己的好奇心之外,这一切都无关紧要
// $x . ($y . $ z)
$tmp = $y . $z;
return $x . $tmp;