Heim >Backend-Entwicklung >PHP-Tutorial >Leistungsvergleich von PHP array_push und $arr[]=$value

Leistungsvergleich von PHP array_push und $arr[]=$value

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

1. array_push-Methode

array_push-Methode, schiebt ein oder mehrere Elemente an das Ende des Arrays.

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

array_push() behandelt das Array als Stapel und schiebt die übergebenen Variablen an das Ende des Arrays. Die Länge des Arrays erhöht sich entsprechend der Anzahl der auf den Stapel verschobenen Variablen.
Der Effekt ist derselbe wie folgt:

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

2. Vergleichen Sie die Leistung von array_push und $arr[]=$value

Verwenden array_push zum Pushen von 1000000 Elementen

<?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;
}
?>

Ausführungszeit: 2735,545158 ms

Verwenden Sie $arr[] = $value zum Pushen von 100000 Elementen

<?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;
}
?>

Ausführungszeit: 417,458057 ms

Ergebnis: Das Pushen jeweils eines Elements mit $arr[]=$value ist siebenmal schneller als mit der Methode array_push.

3. Mehrere Elemente gleichzeitig zum Vergleich verschieben

Verwenden Sie die array_push-Methode, um 100.000 Elemente zu übertragen, jeweils 50 Elemente

<?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;
}

Ausführungszeit: 250,149012 ms

Ergebnis: Die Verwendung von array_push zum gleichzeitigen Pushen mehrerer Elemente ist schneller als die mehrfache Verwendung von $arr[]=$value. Je mehr Elemente array_push gleichzeitig einfügt, desto effizienter ist es.

Zusammenfassung:

Wenn Sie ein Element pushen, ist die Verwendung von $arr[]=$value effizient, da dadurch die zusätzliche Belastung durch das Aufrufen von Funktionen eingespart werden kann.
Wenn mehrere Elemente gleichzeitig gepusht werden, ist die Verwendung von array_push effizienter, da nicht wiederholt der Zeiger auf das Ende der Datei abgerufen werden muss.


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