在高蒙博客看到“php中array_push与$arr[]=$value性能比较测试”,这个问题在平时使用过程中还真没有注意。再看到这篇文章后,也动手试了试,结果如下。
比较array_push与 $arr[]=$value性能
1、使用array_push压入1000000个元素。
-
$arr = array();
-
$starttime = get_microtime();
-
for ($i=0; $i < 1000000; $i++) {
-
array_push($arr , $i);
-
}
-
$endtime = get_microtime();
-
printf("用时%f 毫秒" , ($endtime-$starttime)*1000);//用时3559.043169 毫秒
-
function get_microtime(){
-
//list($msec,$sec) = explode(' ' , microtime());
-
//return (float)$msec+(float)$sec;
-
return microtime(true);
-
}
用时3559.043169 毫秒
2、使用$arr[] = $value压入100000个元素。
-
$arr = array();
-
$starttime = get_microtime();
-
for ($i=0; $i < 1000000; $i++) {
-
$arr[] = $i;
-
}
-
$endtime = get_microtime();
-
printf("用时%f 毫秒" , ($endtime-$starttime)*1000);//用时371.806145 毫秒
-
function get_microtime(){
-
//list($msec,$sec) = explode(' ' , microtime());
-
//return (float)$msec+(float)$sec;
-
return microtime(true);
-
}
用时371.806145 毫秒
结果:
array_push 的执行时间:3559.043169 毫秒,而 $arr[] = $value 的执行时间:371.806145 毫秒。由此可见,在仅仅添加一个元素的情况之下,$arr[] = $value 的执行时间要远远低于 array_push 所需的时间。
3.同时压入多个元素比较。
使用array_push方法,压入100000个元素,每次压入50个元素
-
$arr = array();
-
$starttime = 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);
-
}
-
$endtime = get_microtime();
-
printf("用时%f 毫秒" , ($endtime-$starttime)*1000);//用时237.401962 毫秒
-
-
function get_microtime(){
-
//list($msec,$sec) = explode(' ' , microtime());
-
//return (float)$msec+(float)$sec;
-
return microtime(true);
-
}
结果:
array_push 的执行时间:用时237.401962 毫秒,而 $arr[] = $value 刚测试执行时间:用时371.806145 毫秒,由此可见 array_push 的执行速度快。
综上所述,在只压入一个元素的时候使用 $arr[] = $value,当可以同时压入多个元素的时候推荐使用 array_push。
(注:如果是压入一个元素,使用$arr[]=$value效率高,因为可以节省调用函数的额外负担。如果同时压入多个元素,使用array_push效率高,因为不用重复获取文件尾的指针。)
1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:duhaomu@163.com,我们将第一时间处理!
2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。
3.所有资源仅限于参考和学习,版权归原作者所有,更多请阅读网站声明。