PHP Performance Benchmarks & Optimierungstipps

Array Durchläufe

Mit den bereits bekannten Schleifen kann man mit Hilfe von Iteratoren auch Arrays durchlaufen, ein einfacherer Weg ist jedoch die verwendung von foreach().

Als Testarray wird in diesem Benchmark ein durchnummerierter Array mit 10.000 Feldern mit Zufallszahlen (rand()) verwendet.

Foreach-Konstrukt

<?php
global $arr//Zugriff auf Testarray
foreach($arr as $key => $val) {
    echo 
$val;
}
?>

Das Foreach-Konstrukt stellt eine einfache Art einer Arrayiteration dar und kann nur auch auf Arrays angewendet werden.

Each-Funktion

<?php
global $arr//Zugriff auf Testarray
while (list($key$val) = each($arr)) {
    echo 
$val;
}
?>

Die Each-Funktion liefert das aktuelle Schlüssel-, Wertepaar eines Arrays zurück. Mit Hilfe einer While-Schleife lässt sich somit eine "Foreach-Schleife" nachbilden.

For-Schleife

<?php
global $arr//Zugriff auf Testarray
for($i 0$i 10000$i++) {
    echo 
$arr[$i];
}
?>

Die For-Schleife stellt die klassische Alternative dar, sofern man mit einem Array mit durchnummerierten Schlüsseln arbeitet. Andernfalls bleibt nur der Wechsel auf die obigen Alternativen, bzw. eine while-Eigenbau-Iterations-Mischung.

Die For-Schleife, sowie Foreach() unterscheiden sich bei diesem Test nicht viel. Im Normallfall kann der Übersicht und Lesbarkeit zuliebe also auf foreach zurückgegriffen werden. Bei extrem großen Arrays können die Alternativem for() bzw. each() unter Umständen günstiger werden, da foreach() mit einer Kopie des Arrays arbeitet, die dem entsprechend mehr Speicher verbraucht.

Variante Laufzeit Verhältnis
For 1.531124 ms 100%
Foreach 1.832008 ms 120%
Each 4.126072 ms 269%
Grundlagen - Kontrollstrukturen - Schleifen - Arrays - Inkrement - Strings - Ausgabefunktionen - echo/print
Startseite   –   Impressum