博主辛苦了,我要打赏银两给博主,犒劳犒劳站长。
【摘要】本文介绍PHP array_push() 与 $arr[]=$value 性能比较
Note: 如果用 array_push() 来给数组增加一个单元,还不如用 $array[] = ,因为这样没有调用函数的额外负担。
array_push 方法,将一个或多个元素压入数组的末尾。
int array_push ( array &$array , mixed $var [, mixed $... ] )
array_push() 将array当成一个栈,并将传入的变量压入array的末尾。array的长度将根据入栈变量的数目增加。 与下效果相同:
$arr[] = $value;
分别使用 array_push 和 $arr[] = $value 对 $arr进行存储 1000000 个元素:
$arr = array();
$begin = get_microtime();
for($i = 0; $i < 1000000; $i++)
{
array_push($arr,$i);
}
$end = get_microtime();
var_dump($end -$begin);
$arr = array();
$begin = get_microtime();
for($i = 0; $i < 1000000; $i++)
{
$arr[] = $i;
}
$end = get_microtime();
var_dump($end -$begin);
function get_microtime()
{
list($usec,$sec) = explode(" ",microtime());
return ((float)$sec + (float)$usec);
}
array_push 的执行时间:6.3633639812469 s,而 $arr[] = $value 的执行时间:0.52203011512756 s。由此可见,在仅仅添加一个元素的情况之下,$arr[] = $value 的执行时间要远远低于 array_push 所需的时间。
$arr = array();
$begin = get_microtime();
for($i=0; $i<1000000; $i=$i+50)
{
array_push($arr, $i,$i+1,$i+2,$i+3,$i+4,$i+5,$i+6,$i+7,$i+8,$i+9,$i+10,
$i+11,$i+12,$i+13,$i+14,$i+15,$i+16,$i+17,$i+18,$i+19,
$i+21,$i+22,$i+23,$i+24,$i+25,$i+26,$i+27,$i+28,$i+29,
$i+31,$i+32,$i+33,$i+34,$i+35,$i+36,$i+37,$i+38,$i+39,
$i+41,$i+42,$i+43,$i+44,$i+45,$i+46,$i+47,$i+48,$i+49);
}
$end = get_microtime();
var_dump($end -$begin);
$arr = array();
$begin = get_microtime();
for($i = 0; $i < 1000000; $i++)
{
$arr[] = $i;
}
$end = get_microtime();
var_dump($end -$begin);
function get_microtime()
{
list($usec,$sec) = explode(" ",microtime());
return ((float)$sec + (float)$usec);
}
array_push 的执行时间:0.29201579093933 s,而 $arr[] = $value 的执行时间:0.45602583885193 s,由此可见 array_push 的执行速度快。
综上所述,在只压入一个元素的时候使用 $arr[] = $value,当可以同时压入多个元素的时候推荐使用 array_push。
(注:如果是压入一个元素,使用$arr[]=$value效率高,因为可以节省调用函数的额外负担。如果同时压入多个元素,使用array_push效率高,因为不用重复获取文件尾的指针。)
版权归 马富天PHP博客 所有
本文标题:《PHP array_push() 与 $arr[]=$value 性能比较》
本文链接地址:http://www.mafutian.net/229.html
转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^
顶0
踩0
评论审核未开启 |