simplecontent

PHP Snippets und Beispiele

Inhaltsverzeichnis A-Z Register
Beispiel ausführen

Laufzeit messen

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. Das PHP Code Beispiel:
<?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');



?>

Dieses PHP Snippet soll in erster Linie als Beispiel und Anregung für eigene Bemühungen dienen.
Gerne darf man es für Projekte aller Art benutzen.
Möchte jemand das Snippet also solches in ähnlicher oder anderer Form veröffentlichen ist ein kleiner Hinweis auf simplecontent.net nicht zuviel verlangt oder Herr Koch?
Für die Abwesenheit von Fehlern kann natürlich keine Gewähr gegeben werden.