PHP Benchmark: foreach
Hier mal ein kleiner “foreach” Benchmark, und ein zusätzlicher Vergleich mit der for Schleife. Die folgenden Tests wurden 1000 mal durchlaufen. Die Arrays haben jeweils 10000 Elemente.
Variante 1
foreach($array as $key) { }
MIN: (0.000587) - AVG: (0.000599) - MAX: (0.001773)
Vorteil bei dieser Variante ist das man über die Variable $key gleich den eigentlichen Wert des Array Elements hat. Um hier den Wert des Array Elements zu ändern benötigt man noch eine Zählvariable, welche allerdings nur etwas nützt wenn es sich nicht um einen “assoziativen Array” handelt.
Variante 2
foreach($array as $key => $value) { }
MIN: (0.000776) - AVG: (0.000797) - MAX: (0.002371)
Bei dieser Variante hat man beides den Schlüssel und den Wert so kann man den Wert im Array auch gleich ändern, egal ob assoziativ oder nicht.
Jetzt wissen wir das die erste Variante die schnellere ist, allerdings ist die for Schleife etwas fixer. Um die beiden Schleifen mit einander vergleichen zu können müssen wir einen Zugriff auf ein Array einbauen, da dieser ja bei der foreach Schleife von Haus aus gegeben ist.
foreach Schleife
man nehme die schnellere Variante der foreach Schleife
$i = 0; foreach($array as $key){ $array[$i] = ''; $i++; }
MIN: (0.003123) - AVG: (0.004383) - MAX: (0.006746)
for Schleife
und vergleiche mit der schnellsten Variante der for Schleife
$i = 0; for($i = 1; $i < 10000; ++$i){ $array[$i] = ''; }
MIN: (0.001065) - AVG: (0.001104) - MAX: (0.004772)
Fazit
Wie man sieht ist auch wie in meinem for Benchmark, die for Schleife die schnellere Variante.
