php:output [] w / join vs $output.=
作者:互联网
我正在修改一些代码,其中原作者通过使用数组构建了一个网页:
$output[]=$stuff_from_database;
$output[]='more stuff';
// etc
echo join('',$output);
任何人都可以想到为什么这样做会更好(反之亦然):
$output =$stuff_from_database;
$output .='more stuff';
// etc
echo $output;
解决方法:
它可能是由一个来自语言的人编写的,其中字符串是不可变的,因此连接是昂贵的. PHP不是其中之一,如以下测试所示.所以第二种方法是性能明智,更好.我能想到使用第一种方法的另一个原因是能够用另一种方法替换数组的某些部分,但这意味着要跟踪未指定的索引.
~$cat join.php
<?php
for ($i=0;$i<50000;$i++) {
$output[] = "HI $i\n";
}
echo join('',$output);
?>
~$time for i in `seq 100`; do php join.php >> outjoin ; done
real 0m19.145s
user 0m12.045s
sys 0m3.216s
~$cat dot.php
<?php
for ($i=0;$i<50000;$i++) {
$output.= "HI $i\n";
}
echo $output;
?>
~$time for i in `seq 100`; do php dot.php >> outdot ; done
real 0m15.530s
user 0m8.985s
sys 0m2.260s
标签:php,string-concatenation 来源: https://codeday.me/bug/20190712/1441331.html