在高蒙博客看到“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效率高,因为不用重复获取文件尾的指针。)
评论