1. 程式人生 > >array_push 與 $arr[]=$value 效能比較分析

array_push 與 $arr[]=$value 效能比較分析

本文簡要分析一下php中array_push與$arr[] = $value兩種將元素加入陣列末尾的方法的效能

1. array_push方法

array_push 方法,將一個或多個元素壓入陣列的末尾。array_push() 將array當成一個棧,並將傳入的變數壓入array的末尾。array的長度將根據入棧變數的數目增加。

int array_push ( array &$array , mixed $var [, mixed $... ] )
 
2. $arr[] = $value; 方法

給陣列增加一個值,使用效果和array_push是相同的。


比較 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效率高,因為不用重複獲取檔案尾的指標。