Answers:
没有基准,但是我个人觉得看起来$array[]
更干净,并且诚实地在毫秒内拆分头发是完全没有关系的,除非您计划将数十万个字符串添加到数组中。
编辑:运行此代码:
$t = microtime(true);
$array = array();
for($i = 0; $i < 10000; $i++) {
$array[] = $i;
}
print microtime(true) - $t;
print '<br>';
$t = microtime(true);
$array = array();
for($i = 0; $i < 10000; $i++) {
array_push($array, $i);
}
print microtime(true) - $t;
第一种方法$array[]
比第二种方法快将近50%。
Run 1
0.0054171085357666 // array_push
0.0028800964355469 // array[]
Run 2
0.0054559707641602 // array_push
0.002892017364502 // array[]
Run 3
0.0055501461029053 // array_push
0.0028610229492188 // array[]
这并不奇怪,因为PHP手册指出了这一点:
如果使用array_push()将一个元素添加到数组中,则最好使用$ array [] =,因为这样可以节省调用函数的开销。
它的措辞方式如果array_push
添加多个值更有效,我也不会感到惊讶。编辑:出于好奇,进行了一些进一步的测试,即使添加了大量内容,单个$array[]
通话也比一个通话快array_push
。有趣。
$array[]
确实更快,300ms相对于我的机器上1M分配的2000ms。但是,一次在array_push中添加20个项目的速度约为20 $array[] =
s。
人们常说[]更快,因为没有函数调用的开销。另外,没有人真正喜欢PHP的数组函数...
“是...干草堆,针。...还是针干草堆...啊,f *** ... [] =“
由于“ array_push ”是一个函数,当它在循环内时会多次调用,因此它将在堆栈中分配一个内存。但是,当我们使用$ array [] = $ value时,我们只是将value分配给array。
第二个是函数调用,因此通常它应该比使用核心阵列访问功能慢。但我认为您的脚本中甚至一个数据库查询都将超过对的1.000.000调用array_push()
。