php中array_push与$arr[]=$value性能比较测试

2017年11月15日11:21:28 发表评论 68

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

  • 博主微信
  • 赶快加我来聊天吧
  • weinxin
  • 站长技术资源群
  • 群号:483950522
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: