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

 PHP   高蒙   阅读(2128)   评论(4)   2017-08-15 10:45:39    array_push 


在实际的使用中发现array_push()性能的问题,当我反复array_push()一个数组的时候,效率有点低,我将其换成$arr[]=$value的时候,明显array_push()效率低一些。得到这个结果,那么我就动手用array_push()与$arr[]=$value的两种方法比较性能,结果如下。

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

1、使用array_push压入1000000个元素。

<?php
$starttime = get_microtime();
$arr = array();
for($i=0; $i<1000000; $i++){
    array_push($arr, $i);
}
$endtime = get_microtime();
printf("run time %f ms\r\n", ($endtime-$starttime)*1000);
function get_microtime(){
    list($usec, $sec) = explode(' ', microtime());
    return (float)$usec + (float)$sec;
}
?>

执行时间:202.012062 ms 

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

<?php
$starttime = get_microtime();
$arr = array();
for($i=0; $i<1000000; $i++){
    $arr[] = $i;
}
$endtime = get_microtime();
printf("run time %f ms\r\n", ($endtime-$starttime)*1000);
function get_microtime(){
    list($usec, $sec) = explode(' ', microtime());
    return (float)$usec + (float)$sec;
}
?>

执行时间:130.007029 ms 

结果:

每次压入一个元素,使用$arr[]=$value比使用array_push方法快。 

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

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

<?php
$starttime = get_microtime();
$arr = array();
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("run time %f ms\r\n", ($endtime-$starttime)*1000);
function get_microtime(){
    list($usec, $sec) = explode(' ', microtime());
    return (float)$usec + (float)$sec;
}
?>

执行时间:102.005959 ms 

结果:

使用array_push一次压入多个元素,比多次使用$arr[]=$value压入快。array_push一次压入的元素越多,则效率越高。 

通过上面php中array_push与$arr[]=$value性能比较结果,

总结:

如果是压入一个元素,使用$arr[]=$value效率高,因为可以节省调用函数的额外负担。 

如果同时压入多个元素,使用array_push效率高,因为不用重复获取文件尾的指针。





相关文章



我要评论


站长昵称:(*)

输入内容:


评论列表


高蒙

男,程序猿一枚

 

人生要是没有理想, 那跟一条咸鱼有什么分别。


关于我

  http://www.shuchengxian.com

高蒙个人博客是以PHP技术为主的程序员个人博客。博客主要发布php开发中遇到的问题以及解决办法,同时个人博客也分享网站模板素材,jquery插件等方面素材。


站点声明:相关侵权、举报、投诉及建议等,请发E-mail:936594075#qq.com(#替换成@)。

Copyright © 2018, www.shuchengxian.com, All rights reserved. 个人博客皖公网安备 34152302000022号 皖ICP备15015490号

关键词:个人博客,PHP博客,PHP博客程序,高蒙博客,高蒙个人博客,php程序员博客,程序员个人博客