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

1.array_push方法

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

1

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

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

1

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

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

使用array_push压入1000000个元素

1

2

3

4

5

6

7

<?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个元素

1

2

3

4

5

6

7

<?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个元素

1

2

3

4

5

6

7

8

9

10

11

<?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效率高,因为不用重复获取文件尾的指针。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值