Zählschleife so oft durchführen, wie ein Array Einträge hat
Schleifen, die ein Array durchlaufen sind sehr häufig. Dazu gibt es entweder die foreach-Schleife oder die for-Schleife mit Zählvariable. Besonders bei letzterer sieht man sowohl in von Hobbyprogrammiern als auch in von professionellen Entwicklern programmiertem Code recht häufig folgenden Schleifenkopf:
$array = array(...); for($i=0;$i<count($array);$i++)> ... }
Das count muss dabei allerdings bei jedem Schleifendurchlauf wieder berechnet werden, damit die Bedingung überprüft werden kann (ob $i<count($array)). Das ist unnötig.
Performanter geht es mittels folgender Funktion:
$array = array(...); $cnt_array = count($array); for($i=0;$i<$cnt_array;$i++) { ... }
Etwa gleichwertig zum Bestimmen der Array-Länge vor der Schleife ist die Funktion foreach:
foreach($array as $item) { ... }
Auswertung:
Die konstanten Variante (Arraylänge vor der Schleife bestimmt) und die foreach-Variante benötigen pro Durchlauf durchschnittlich ca 9 ms und die dynamische (Länge im Schleifenkopf bestimmt) knapp 14 ms. Die konstante Version ist also über 50 % schneller als die dynamische!!!
Datei | Gesamtlaufzeit | durchschnittliche Laufzeit pro Durchlauf | Verhältnis zur schnellsten Variante |
---|---|---|---|
loop_constant.php | 9,12 s | 9,123 ms | 100% |
loop_foreach.php | 9,17 s | 9,173 ms | 101% (+ 1%) |
loop_dynamic.php | 13,80 s | 13,800 ms | 151% (+ 51%) |