Blogger Information
Blog 263
fans 3
comment 2
visits 113337
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php array_push 与 $arr[]=$value 性能比较
福哥的博客
Original
1659 people have browsed it

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

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post