Eine einfache Möglichkeit um z.B. die benötigte Zeit von Funktionen zu vergleichen.
Dieses Beispiel ist eine Weiterentwicklung des
Skriptes der php-faq-Liste.
Bei solchen Benchmarktest ist darauf zu achten, dass die tatsächliche Arbeit, also
das was die zu messende Funktion tut, deutlich grösser ist, als der Overhead, also die durch die Ausführung des Skriptes als solches benötige Arbeit.
In der Regel muss man die zu messende Funktion oder Berechnung mehrfach durchführen, um zu
messbaren Resultaten zu kommen.
<?php
function BenchmarkTimer ($EventMessage = '', $ResetEventTimer = false)
{
static $StartTime = false;
static $EventTime = 0;
// aktuelle Zeit ermitteln
list($low, $high) = split(' ', microtime());
$t = $high + $low;
// bei erstem Aufruf initialisieren
if ($StartTime == false){
$StartTime = $t;
$EventTime = $t;
}
// ggf. EventTimer zurücksetzen
if ($ResetEventTimer) {
$EventTime = $t;
}
// verstrichene Zeit seit erstem Aufruf
$TotalTimeElapsed = $t - $StartTime;
// verstrichene Zeit seit letztem Aufruf
$EventTimeElapsed = $t - $EventTime;
$EventTime = $t;
$msg = sprintf (
'<br>%s (%8.4f) (%8.4f)<br>'
,$EventMessage
,$TotalTimeElapsed
,$EventTimeElapsed
);
return $msg;
}
$iterations = 400;
$nbr2loop = $iterations;
$dummy = 1;
print BenchmarkTimer('start A');
while ($nbr2loop-- > 0){
$dummy += pow($dummy,2);
}
print BenchmarkTimer('stopA');
$nbr2loop = $iterations;
$dummy = 1;
print BenchmarkTimer('start B', true);
while ($nbr2loop-- > 0){
$dummy = $dummy*2;
}
print BenchmarkTimer('stopB');
?>