php array_push 與 $arr[]=$value 性能比較


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效率高,因為不用重復獲取文件尾的指針。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM