PHP Maniac

Das PHP Blog für PHP-Profis und alle die es werden wollen

Laufzeit eines PHP Skripts messen

2 Mai, 2009 (17:38) | Code-Schnipsel, Grundlagen, PHP 5 | Von: PHP Maniac

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.

Be Sociable, Share!

Weitere Beiträge, die für Sie interessant sein könnten:

  1. PHP Extensions zur Laufzeit einbinden

Kommentare

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 :P

Gruß

Kommentar von PHP Maniac
Datum 30. Mai 2009 um 15:27 Uhr

Tatsache! Vielen Dank für den Hinweis, habs oben mal geändert :)

Schreibe einen Kommentar