PHP: Benchmark – Scriptlaufzeit messen
Oft sieht man auf Seiten am unteren Rand einen Hinweis darauf, wie lange die Seite zum Laden, bzw. das jeweilige Script zur Verarbeitung der Daten benötigt hat. Diese Zeitangaben sind gerade für Webentwickler sehr wichtig, um Rückschlüsse ziehen zu können, welche Bereiche weiter optimiert werden müssen.
Nimmt man Beispielsweise eine Statistik, die aus Tausende von Daten erstellt wird, so muss das Script teilweise hunderte aufeinanderfolgende Datenbank abfragen durchführen und eventuell im Nachgang alle Daten sortieren. Um dafür den bestmöglichen Algorithmus zu finden, der möglichst wenig Zeit in Anspruch nimmt, ist es notwendig die Script-Laufzeit zu messen.
Hier ist eine einfache Lösung um die Script-Laufzeit für PHP-Basierte Anwendungen und Webseiten zu messen und am Ende der Seite auszugeben.
Zuerst benötigen wir eine Datei in der wir die Benchmark-Klasse ablegen:
benchmark.inc
<?php
/**
* benchmark.inc
* @copyright 2009 by dejavu-design.eu
* Freigegeben für die ausschließlich private Verwendung.
*/
class benchmark
{
var $startstamp;
var $stopstamp;
function CBench()
{
$this->startstamp = 0;
$this->stopstamp = 0;
$this->start();
}
function readmicrotime()
{
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
function start()
{
$this->startstamp = $this->readmicrotime();
}
function stop()
{
$this->stopstamp = $this->readmicrotime();
}
function differenz()
{
$result = $this->stopstamp - $this->startstamp;
return $result;
}
}
?>
Für die Messung ist es nun lediglich notwendig die Klasse in das zu bemessende Script zu laden und am Ende das Messergebnis auszugeben:
index.php
<?php
/**
* index.php
* @copyright 2009 by dejavu-design.eu
* Freigegeben für die ausschließlich private Verwendung.
*/
// Benchmark initialisieren und starten
include ("benchmark.inc");
$bench = new benchmark;
// -------------------------BENCHMARK---
// Hauptscript abarbeiten --------------
// Hier sollte nun das eigentliche Script seine Arbeit tun..
// --------------------------SCRIPT---
// Benchmark stoppen und Wert ausgeben -
$bench->stop();
echo "Laufzeit: " . $bench->differenz() . " Sekunden";
// ------------------------BENCHMARKT---
?>
Mehr ist zur Messung nicht notwendig. Der Benchmark startet sich selbstständig, in dem Moment, in dem die Klasse eingebunden wird. Dabei wird die Mikro-Zeit gelesen. Am Ende des Scriptes erfolgt der Stop-Befehl, welcher das erneute lesen der Mikro-Zeit durchführt. Anschließend wird mit der Klassen-Funktion “differenz” die Differenz beider Werte errechnet und ausgegeben.

Senden...