在高蒙博客看到“PHParray_push$arr[]=$value性能比较测试”,这个问题在平时使用过程中还真没有注意。再看到这篇文章后,也动手试了试,结果如下。

比较array_push与 $arr[]=$value性能

1、使用array_push压入1000000个元素

  1. $arr = array();  

  2. $starttime = get_microtime();  

  3. for ($i=0; $i < 1000000; $i++) {   

  4.     array_push($arr , $i);  

  5. }  

  6. $endtime = get_microtime();  

  7. printf("用时%f 毫秒" , ($endtime-$starttime)*1000);//用时3559.043169 毫秒  

  8. function get_microtime(){  

  9.     //list($msec,$sec) = explode(' ' , microtime());  

  10.     //return (float)$msec+(float)$sec;  

  11.     return microtime(true);  

  12. }  

用时3559.043169 毫秒

 

2、使用$arr[] = $value压入100000个元素。

  1. $arr = array();  

  2. $starttime = get_microtime();  

  3. for ($i=0; $i < 1000000; $i++) {   

  4.     $arr[] = $i;  

  5. }  

  6. $endtime = get_microtime();  

  7. printf("用时%f 毫秒" , ($endtime-$starttime)*1000);//用时371.806145 毫秒  

  8. function get_microtime(){  

  9.     //list($msec,$sec) = explode(' ' , microtime());  

  10.     //return (float)$msec+(float)$sec;  

  11.     return microtime(true);  

  12. }  

用时371.806145 毫秒

结果:

array_push 的执行时间:3559.043169 毫秒,而 $arr[] = $value 的执行时间:371.806145 毫秒。由此可见,在仅仅添加一个元素的情况之下,$arr[] = $value 的执行时间要远远低于 array_push 所需的时间。

3.同时压入多个元素比较。

使用array_push方法,压入100000个元素,每次压入50个元素

  1. $arr = array();  

  2. $starttime = get_microtime();  

  3. for ($i=0; $i < 1000000; $i = $i+50) {   

  4.      array_push($arr$i,$i+1,$i+2,$i+3,$i+4,$i+5,$i+6,$i+7,$i+8,$i+9,$i+10,  

  5.         $i+11,$i+12,$i+13,$i+14,$i+15,$i+16,$i+17,$i+18,$i+19,  

  6.         $i+21,$i+22,$i+23,$i+24,$i+25,$i+26,$i+27,$i+28,$i+29,  

  7.         $i+31,$i+32,$i+33,$i+34,$i+35,$i+36,$i+37,$i+38,$i+39,  

  8.         $i+41,$i+42,$i+43,$i+44,$i+45,$i+46,$i+47,$i+48,$i+49);  

  9. }  

  10. $endtime = get_microtime();  

  11. printf("用时%f 毫秒" , ($endtime-$starttime)*1000);//用时237.401962 毫秒  

  12.   

  13. function get_microtime(){  

  14.     //list($msec,$sec) = explode(' ' , microtime());  

  15.     //return (float)$msec+(float)$sec;  

  16.     return microtime(true);  

  17. }  

结果:

array_push 的执行时间:用时237.401962 毫秒,而 $arr[] = $value 刚测试执行时间:用时371.806145 毫秒,由此可见 array_push 的执行速度快。

综上所述,在只压入一个元素的时候使用 $arr[] = $value,当可以同时压入多个元素的时候推荐使用 array_push。

(注:如果是压入一个元素,使用$arr[]=$value效率高,因为可以节省调用函数的额外负担。如果同时压入多个元素,使用array_push效率高,因为不用重复获取文件尾的指针。)


评论(0条)

刀客源码 请登录后评论
admin

刀客资源网

999+

0

0

( 刀客源码-专业资源分享平台! )

广告位-1