Zum Inhalt

Zeitmessung

Performance ist sehr wichtig und an vielen Stellen muss der Entwickler die Dauer von Operationen prüfen.

xdebug & WinCacheGrind

Um das Ausführungsverhalten des gesamten Quelltext zu beurteilen und die zeitliche Ausführung zu messen, ist der Einsatz einer Bibliothek wie xdebug sinnvoll. Optimal geht die Auswertung der Daten mit WinCacheGrind. Hier können die genauen Ausführungszeiten der einzelnen Schritte gemessen und analysiert werden.

Messung mittels Profiler-Klasse

Oftmals stehen diese Bibliotheken in der Umgebung nicht zur Verfügung, oder eine Anwendung ist für eine Einzelmessung zu aufwendig. Hier kann die Alvine-Klasse Alvine\Util\Profiling\Profiler helfen. Diese Klasse nimmt einen Meßwert und kann über die Methode getDuration() die Differenz ausgeben.

$profiler = \Alvine\Util\Profiling\Profiler::getInstance('test');
$profiler->record('start');
echo "\n";
echo 'Anfang: '.$profiler->getDuration().' s';
echo "\n";

// Mache irgendetwas ... 
$profiler->record('ende');
echo "\n";
echo 'Ende: '.$profiler->getDuration().' s';
echo "\n";

// Ergebnis -> Anfang: 0.00016212463378906 s 
//            Ende: 0.00041818618774414 s

Einen einfacheren Ansatz bietet die statische Methode Profiler::execute(). Der Methode kann ein Zähler n und ein Callback fkt übergeben werden. Die Methode führt den Callback fkt, dann n mal aus und misst die Ausführungszeit.

f7ffdfa1-49c8-48eb-8f27-ae8dc5a5dbc6