php函数中 array_push 与 $arr[]=$value 的性能测试
1.array_push方法
array_push 方法,将一个或多个元素压入数组的末尾。
int array_push ( array &$array , mixed $var [, mixed $... ] )
1
array_push() 将array当成一个栈,并将传入的变量压入array的末尾。array的长度将根据入栈变量的数目增加。
与下效果相同:
<?php
$arr[] = $value;
?>
1
2
3
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 msrn", ($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 msrn", ($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 msrn", ($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效率高,因为不用重复获取文件尾的指针。
责任编辑: webmaster >>> 百度上搜索 谷歌上搜索
点击复制本连接 (http://www.hugesky.com/showarticle.php?id=6881)>>> 相关资讯:
【声明】: 以上文章或资料除注明为电脑技巧原创或编辑整理外,均为网络收集整理或网友推荐。以上内容以共享、参考、研究为目的,不存在任何商业目的。 未注明作者或出处的文章,可能资料来源不规范。如有涉及版权请给予及时联系更正或予以删除。 |