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.715899 ms 100%
Foreach 4.561901 ms 266%
Each 7.699966 ms 449%
Grundlagen - Kontrollstrukturen - Schleifen - Arrays - Inkrement - Strings - Ausgabefunktionen - echo/print
Startseite   –   Impressum