PHP Performance Benchmarks & Optimierungstipps
Einfache Schleifen und Durchläufe
Schleifen gehören bei allen Programmiersprachen zu den Grundfunktionne und sind äußerst nützlich, ob für Programmwiederholungen, Arraydurchläufe oder um Zeilen aus einem Datenbankabfrageergebnis zu durchlaufen.
While-Schleife
<?php
$i = 0;
while($i < 100000) {
$i++;
}
?>
Die While-Schleife gehört zu den kopfgesteuerten Schleifen, da zu Begin eines Durchlaufs immer die Abbruchbedingung (Condition) überprüft wird.
Do..While-Schleife
<?php
$i = 0;
do {
$i++;
} while($i < 100000);
?>
Die Do..While-Schleife, in manchen Sprachen auch repat-until gennant, ist Fußgesteuert, d.h. die Abbruchbedingung(en) werden am Ende eines jeden Durchlaufs überprüft. Somit hat jede do..while Schleife mindestens einen Durchlauf.
For-Schleife
<?php
for($i = 0; $i < 100000; $i++) {
// Kein Code
}
?>
Die For-Schleife ist auch kopfgesteuert, sie ist jedoch wesentlich komplexer als die While-Schleifen. Der Schleifenkopf benötigt drei Ausdrücke: Initialisierung des Iterators (bei Schleifenbeginn), Bedingung(en) (vor jedem Durchlauf) und ein Anweisungsfeld (in der Regel für Iterationserhöhung, welche am Ende eines Durchlaufs ausgeführt wird).
Die For-Schleife landet bei diesem Test auf Grund ihrer Komplexität wie erwartet auf dem letzten Platz; am schnellsten schafft die do..while Schleife die 100.000 Schleifendurchläufe, da diese die Abbruchbedingungen erst am Ende eines Duchlaufs überprüft und somit keine Sprünge in der Maschinensprache braucht.
Variante | Laufzeit | Verhältnis |
For | 0.751019 ms | 100% |
Do-While | 2.07901 ms | 277% |
While | 2.383947 ms | 317% |