Für einen Entwickler ist es auch im Bereich der Webentwicklung unentbehrlich zu wissen, wie lange bestimmte Aktionen in einem Programm brauchen. Benchmark-Profiler sind teuer, aber einen kleine PHP-Klasse schafft Abhilfe.
Es gibt verschiedene Situationen, in denen es interessant ist, die Ausführungszeit verschiedener Codeblöcke oder ganzer Scripte in Erfahrung zu bringen. Da ich momentan am Refaktorisieren eines Scriptes bin, möchte wissen in wie weit sich die Änderungen im Quellcode auf die Ausführungszeit auswirken.
Dazu habe ich eine kleine Klasse in PHP5 geschrieben, mit der man einfach die Ausführungszeit messen kann. Zu sehen in Listing 1. Natürlich braucht die Zeitmessung an sich etwas Rechenzeit. Die ist aber meiner Meinung nach vernachlässigbar, wenn es einem nur um das Vergleichen der Zeitmessungen geht.
Anzumerken ist, dass durch die Nutzung eines Schlüssels, die Klasse beliebig of in einem Script verwendet werden kann. Auch macht ist die Nutzung der Klasse durch statische Methoden vereinfacht.
Die Klasse steht hier, mit Kommentaren zum Download bereit.
Listing 1
Download Code!
// Kleine Klasse zur Zeitmessung
// @author Sebastian / entwickler-blog.de
class Stopwatch {
public static function start
($key = 'test') { }
}
public static function result
($key = 'test') { if(!isset(self
::$endTime[$key]) && !isset(self
::$startTime[$key])) throw
new Exception
('Schlüssel: '.$key.' für Zeitmessung ist nicht vorhanden!'); return (self::$endTime[$key] - self::$startTime[$key]);
}
}
// Benutzung der Klasse
Stopwatch::start('Berechnung_1'); // Startzeitpunkt setzen
sleep(4); // Teuere Berechnung Stopwatch
::end('Berechnung_1'); // Endzeitpunkt setzen
try {
echo Stopwatch
::result('Berechnung_1'); // Ergebnis } catch(Exception $e) {
}