登录  /  注册
博主信息
博文 263
粉丝 3
评论 2
访问量 110829
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
php array_push 与 $arr[]=$value 性能比较
福哥的博客
原创
1640人浏览过

1.array_push方法

array_push 方法,将一个或多个元素压入数组的末尾。

int array_push ( array &$array , mixed $var [, mixed $... ] )

array_push() 将array当成一个栈,并将传入的变量压入array的末尾。array的长度将根据入栈变量的数目增加。 
与下效果相同:

<?php$arr[] = $value;?>

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

使用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;
}?>

执行时间:2735.545158 ms

使用$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;
}?>

执行时间:417.458057 ms

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

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;
}?>

执行时间:250.149012 ms

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

总结:

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

本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学