Heim  >  Artikel  >  Backend-Entwicklung  >  php array_push 与 $arr[]=$value 性能比较

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

PHP中文网
PHP中文网Original
2017-06-07 14:34:261390Durchsuche

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(&#39; &#39;, 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(&#39; &#39;, 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(&#39; &#39;, microtime());
    return (float)$usec + (float)$sec;
}

执行时间:250.149012 ms

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

总结:

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


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn