Laufzeit eines PHP Skripts messen
Heute mal ein Klassiker, den vielleicht schon viele kennen. Allerdings ist die Laufzeitmessung von PHP Skripten eine interessante Sache, auch wenn sie sehr leicht zu implementieren ist. Gerade bei stark frequentierten Seiten oder aufwändigen Berechnungen (Stichwort Parsing oder Crawlen) hilft die Laufzeitmessung mögliche Fehler zu erkennen oder das Skript hinsichtlich der Geschwindigkeit zu verbessern. Wenn so ein Skript dann mehrere hundert Seiten Crawlt, können auch kleine Verbesserungen zu enormen Geschwindigkeitsverbesserungen führen.
So wirds gemacht
Die Skriptlaufzeit wird am einfachsten über die Differenz zwischen Start- und Endzeit des begroffenen Skripts berechnet. Hierzu muss die aktuelle Zeit zu Beginn des Skripts möglichst genau bestimmt und gespeichert werden. Nach Ablauf des Programms wird die Endzeit ebenfalls gespeichert und durch Subtraktion die Differenz gebildet. Diese repräsentiert dann die Laufzeit des Skripts. Lange Rede kurzer Sinn:
$start = time(); //Aufwändige Berechnungen $end = time(); $laufzeit = $end-$start; echo "Laufzeit: ".$laufzeit." Sekunden!";
Das obige Beispiel misst die Laufzeit in Sekunden. Für die meisten Skripte ist dies jedoch viel zu ungenau, da diese (hoffentlich) deutlich unter einer Sekunde abgearbeitet werden. Daher empfiehlt es sich die Laufzeit in Millisekunden zu messen:
$start = microtime(true); //Aufwändige Berechnung $end = microtime(true); $laufzeit = $end - $start; echo "Laufzeit: ".$laufzeit." Sekunden!";
Der Befehl microtime liefert uns die aktuelle Zeit in Mikrosekunden zurück. Über den boolschen Parameter wird diese als float formatiert, was für die Subtraktion benötigt wird. Zu beachten ist jedoch, dass dieser Parameter erst seit PHP 5 zur Verfügung steht.
Hinweise zur Laufzeitmessung
Wird die Laufzeitmessung in größeren Projekten, die aus einer vielzahl von Dateien bestehen, verwendet, so muss natürlich darauf geachtet werden, dass die Startzeit immer ganz zu Anfang des Programms und die Endzeit samt Auswertung ganz zum Schluss genommen werden. In der Praxis können das Header und Footer Dateien sein, generell ist bei solchen Projekten jedoch zu empfehlen alle Funktionen über eine index.php laufen zu lassen, die alle benötigten Dateien includet. Somit kann die Laufzeitmessung auch ausschließlich in dieser erfolgen.
Weitere Beiträge, die für Sie interessant sein könnten:
Kommentare
Kommentar von PHP Maniac
Datum 30. Mai 2009 um 15:27 Uhr
Tatsache! Vielen Dank für den Hinweis, habs oben mal geändert

Kommentar von Pascal
Datum 28. Mai 2009 um 12:58 Uhr
Hey,
echo “Laufzeit: “.$laufzeit.” Millisekunden!”;
bei dem Rechnen mit Millisekunden stimmt nicht so ganz, es müsste
echo “Laufzeit: “.$laufzeit.” Sekunden!”;
heißen
Zumindest zeigt das empirisches Testen
Gruß