Benchmark

Artikel bewerten:
Bitte bewerten Sie den Artikel per Klick auf einen der angezeigten Sterne:
Zurück zum Artikel!
Gerade bei Webapplikationen ist Performance extrem wichtig. Kein Besucher wartet freiwillig länger als 10s auf eine Webseite. Um bereits bei der Entwicklung das Thema Performance nicht aus den Augen zu verlieren stellt das Framework mit dem benchmarkTimer eine Benchmark-Komponente zur Verfügung, mit der alle Ausführungszeiten gemessen und anschließend dargestellt werden können. Die GUI-Schicht (Page- und Frontcontroller) unterstützen das Beurteilen der Ausführungszeiten mit vielen Messpunkten. Beispielsweise werden die Ausführungszeiten von Document-Controllern ohne Zutun des Entwicklers aufgenommen und im Report dargestellt.


1. Anwendung des Benchmarkers

Die Anwendung des benchmarkTimers gestaltet sich sehr einfach. Es ist lediglich folgender Code vor und nach dem zu messenden Events einzufügen:
  $T = &Singleton::getInstance('benchmarkTimer');
  
$T->start('MyEvent');

  
//
  // Zu messender PHP-Code
  //

  
$T->stop('MyEvent'); 
Zu beachten ist dabei lediglich, dass der benchmarkTimer immer singleton instanziiert werden muss, da sonst Informationen über Teile der Messung verloren gehen können. Es muss zudem auf den Gültigkeitsbereich von Variablen geachtet werden. Sind Messungen über die Grenzen von Funktionen und Klassen hinweg notwendig muss sichergestellt sein, dass die Variable, die die Referenz auf die Instanz des benchmarkTimers kein Null-Pointer ist. Hier ist es ratsam folgenden Code zu verwenden:
  $T = &Singleton::getInstance('benchmarkTimer');
  
$T->start('MyEvent');

  
//
  // Zu messender PHP-Code
  //

  
$T = &Singleton::getInstance('benchmarkTimer');
  
$T->stop('MyEvent'); 
Dieser Fall findet jedoch nur in Ausnahmen Anwendung.


2. Generieren eines Reports

Da das Framework im Postback-Modus arbeitet und es im Allgemeinen nur eine zentrale Datei (zumeist index.php) gibt, ist das generieren von Reports durch ein
  $T = &Singleton::getInstance('benchmarkTimer');
  echo 
$T->createReport(); 
am Ende der index.php zu bewerkstelligen. Möchte der Entwickler selbst entscheiden, wann der Report angezeigt wird um auch im Live-Betrieb ein Gefühl für die Performance der Applikation behalten zu können kann das durch das Einfügen des Codes
   if(isset($_REQUEST['benchmarkreport'])){
      if(
$_REQUEST['benchmarkreport'] == 'true'){
         
$T = &Singleton::getInstance('benchmarkTimer');
         echo 
$T->createReport();
       
// end if
      
}
    
// end if
   
am Ende der index.php bewerkstelligt werden. Ein Report der aktuell angezeigten Seite hat folgende Gestalt:

Benchmark Report Prozess Baum
Um einen aktuellen Report anzeigen zu lassen, bitte hier klicken.


Kommentare

Möchten Sie den Artikel eine Anmerkung hinzufügen, oder haben Sie ergänzende Hinweise? Dann können Sie diese hier einfügen. Die bereits verfassten Anmerkungen und Kommentare finden Sie in der untenstehenden Liste.


Für diesen Artikel liegen aktuell keine Kommentare vor.