在php中数组赋值的时候用array[]这种方法效率会较高于array_push(),于是乎各种缘由就有了下面的测试
测试代码:
<?php
/**
*数组性能测试
*for循环遍历测试函数有性能影响所以没有用,不同时调用2个函数也是担心具有影响,不封装同时执行代码是具有影响的
*测试是更改$count参数(从10~100000 整取递增)和调用方法手动刷新,记录时间为平均大概时间
**/
$count = 10;
arrayTest01($count);
function arrayTest01($count) {
$arr = array ();
$time = microtime(true);
for ($i = 0; $i < $count; $i++) {
$array[] = $i;
}
echo (microtime(true) - $time);
}
function arrayTest02($count) {
$arr = array ();
$time = microtime(true);
for ($i = 0; $i < $count; $i++) {
array_push($arr, $i);
}
echo (microtime(true) - $time);
}
?>
效率大概是array[]快将近一倍,测试环境是ubuntu 11 和 windows 7
windows php-5.2.17/ Apache2.2
times($count) 10 100 1000 10000 100000 1000000
array[] 2.31E-05 0.000104 0.000867 0.008417 0.043666 0.288323
array_push 2.79E-05 0.000181 0.001614 0.014447 0.055875 0.491052
ubuntu11.04 PHP 5.3.6/apache2.2
array[] 1.91E-05 7.70E-05 0.000726 0.007669 0.040492 报错
array_push 2.50E-05 1.26E-04 0.001149 0.013714 0.056978 报错
这是官方网站上的说辞
Note: 如果用 array_push() 来给数组增加一个单元,还不如用 $array[] = ,因为这样没有调用函数的额外负担。
官网链接: