Dienstag, 12. September 2006

PHP

Ausführungszeit eines Scriptes in PHP messen

Für einen Entwickler ist es auch im Bereich der Webentwicklung unentbehrlich zu wissen, wie lange bestimmte Aktionen in einem Programm brauchen. Benchmark-Profiler sind teuer, aber einen kleine PHP-Klasse schafft Abhilfe.

Es gibt verschiedene Situationen, in denen es interessant ist, die Ausführungszeit verschiedener Codeblöcke oder ganzer Scripte in Erfahrung zu bringen. Da ich momentan am Refaktorisieren eines Scriptes bin, möchte wissen in wie weit sich die Änderungen im Quellcode auf die Ausführungszeit auswirken.

Dazu habe ich eine kleine Klasse in PHP5 geschrieben, mit der man einfach die Ausführungszeit messen kann. Zu sehen in Listing 1. Natürlich braucht die Zeitmessung an sich etwas Rechenzeit. Die ist aber meiner Meinung nach vernachlässigbar, wenn es einem nur um das Vergleichen der Zeitmessungen geht.

Anzumerken ist, dass durch die Nutzung eines Schlüssels, die Klasse beliebig of in einem Script verwendet werden kann. Auch macht ist die Nutzung der Klasse durch statische Methoden vereinfacht.

Die Klasse steht hier, mit Kommentaren zum Download bereit.



Listing 1

Download Code!

  1.  
  2.  
  3.  // Kleine Klasse zur Zeitmessung
  4.  // @author Sebastian / entwickler-blog.de
  5. class Stopwatch {
  6.    
  7.  
  8.     private static $startTime = array();  
  9.    
  10.     private static $endTime   = array();
  11.    
  12.    
  13.     public static function start($key = 'test') {
  14.         self::$startTime[$key] = microtime(true);
  15.     }
  16.    
  17.     public static function end($key = 'test') {
  18.         self::$endTime[$key] = microtime(true);
  19.     }
  20.    
  21.  
  22.     public static function result($key = 'test') {
  23.         if(!isset(self::$endTime[$key]) && !isset(self::$startTime[$key])) throw new Exception('Schlüssel: '.$key.' für Zeitmessung ist nicht vorhanden!');
  24.         return (self::$endTime[$key] - self::$startTime[$key]);
  25.     }
  26. }
  27.  
  28.  
  29. // Benutzung der Klasse
  30.  
  31. Stopwatch::start('Berechnung_1'); // Startzeitpunkt setzen
  32. sleep(4); // Teuere Berechnung
  33. Stopwatch::end('Berechnung_1'); // Endzeitpunkt setzen
  34.  
  35. try {
  36.         echo Stopwatch::result('Berechnung_1'); // Ergebnis
  37. } catch(Exception $e) {
  38.         echo $e->getMessage();
  39. }
  40.  
Bewertung: 5 von 5, 1 Stimme(n) 1223 Klicks
PHP
Von Mr.Foo in PHP am 12.09.06@11:41 Uhr

Trackbacks
Trackback für spezifische URI dieses Eintrags

Keine Trackbacks

0 Kommentare
Ansicht der Kommentare: (Linear | Verschachtelt)

Noch keine Kommentare


Kommentar schreiben

Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
Sie können [geshi lang=LANG][/lang] Tags verwenden um Quellcode abhängig von der gewählten Programmiersprache einzubinden
 
 

Mr. Foo

Ausführungszeit eines Scriptes in PHP messen

  • Homepage

Suche

Kategorien

  • Android (2)
  • C-Sharp (4)
  • Datenbank (30)
  • Delphi (2)
  • Entwicklung (36)
  • Flash (5)
  • Games (10)
  • Gutscheine (4)
  • Hardware (14)
  • HTML CSS (16)
  • Internet (88)
  • Java (32)
  • Javascript (24)
  • Linkdump (9)
  • Linux (102)
  • Low-Level (10)
  • Lua (8)
  • Musik (9)
  • Netzwerk (25)
  • New World Order (109)
  • Perl (3)
  • PHP (130)
  • Magento (5)
  • Symfony (3)
  • Zend Framework (7)
  • Probleme und Lösungen (26)
  • Python (22)
  • Ressourcen (23)
  • Sicherheit (91)
  • Software (60)
  • Sonstiges (47)
  • Own Stuff (48)
  • Spass (46)
  • Technik / Wissenschaft (4)
  • Tips (15)
  • Weisheiten (17)
  • Windows (23)
  • Wort des Tages (15)


Alle Kategorien

Archive

  • Mai 2012
  • April 2012
  • März 2012
  • Das Neueste ...
  • Älteres ...

Abonnieren lohnt sich!

  • XML RSS 2.0 feed
  • ATOM/XML ATOM 1.0 feed
  • XML RSS 2.0 Kommentare

Tagcloud

Datenbank Entwicklung Internet Java Javascript Linux Lösung Netzwerk News New World Order PHP Problem Probleme und Lösungen Sicherheit Software Sonstiges Spass Tipp Update Windows

Beliebte Einträge

  • Magento ist scheisse (197)
  • Plugin-container.exe deaktivieren (107)
  • BWin Betrug und Abzocke bei Minigames? (65)
  • C compiler cannot create executables unter Debian (53)
  • Scheiss Linux - USB-Platte viel zu langsam (wenns mal funktioniert) (43)
  • Sicheres Kontaktformular mit PHP - Spam verhindern (37)
  • UML-Diagramme aus Java-Klassen generieren – Java2UML (28)
  • Es konnte keine TCP/IP-Verbindung mit dem Host hergestellt werden (28)
  • Option Bug im Internet Explorer bei Nutzung von innerHTML und Javascript (24)
  • Zend Studio - Javaw.exe lastet die CPU aus (24)

Kommentare

Hugo zu BWin Betrug und Abzocke bei Minigames?
So, 20.05.2012 12:25
ich habe mich gestern auf BWIN reg [...]
Ubuntu 12.04 zu The assembly mscorlib.dll was not found or could not be loaded.
Fr, 18.05.2012 17:11
Hat bei mir leider nicht geklappt. [...]
Oliver Riske zu Es konnte keine TCP/IP-Verbindung mit dem Host hergestellt werden
Di, 15.05.2012 20:38
Super Danke!
anon zu BWin Betrug und Abzocke bei Minigames?
Sa, 05.05.2012 18:43
ihr scheiss betrüger
Jürgen zu Unable to elevate error:1814 VLC Problem
Mi, 02.05.2012 16:54
So einfach ist es bei mir jedenfal [...]
 

Kontakt/Informationen