Geschwindigkeit eines PHP Scripts messen
Geschrieben am 08.07.2009
Zur Zeit arbeite ich an einem objekt-orientierten Framework und habe, in diesem Zuge, eine Vielzahl von interessanten Klassen programmiert. Eine kleine Auswahl dieser Klassen werde ich in nächster Zeit in meinem Blog vorstellen.
Der Anfang macht hierbei die Klasse timer, mit welcher man die Geschwindigkeit eines PHP Scriptes messen kann. Hier ein Beispiel welches die Funktionsweise der Klasse verdeutlichen soll:
1 2 3 4 5 6 7 8 | $timer = new timer(); for ($i = 0; $i < 4; $i++) { sleep (rand(2,3)); echo "Vergangene Zeit seit der letzten Messung : ".$timer->measure_intermediate()." Sekunden <br />"; echo "Insgesamt vergangene Zeit: ".$timer->measure_elapsed()." Sekunden<br /><br />"; } |
Ausgabe:
Vergangene Zeit seit der letzten Messung : 2.001 Sekunden Insgesamt vergangene Zeit: 2.001 Sekunden Vergangene Zeit seit der letzten Messung : 3 Sekunden Insgesamt vergangene Zeit: 5 Sekunden Vergangene Zeit seit der letzten Messung : 3 Sekunden Insgesamt vergangene Zeit: 8.001 Sekunden Vergangene Zeit seit der letzten Messung : 2.193 Sekunden Insgesamt vergangene Zeit: 10.193 Sekunden |
Die Klasser timer:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | <?php //Measure executing time class timer { private $time; private $last_time; //Constructor public function __construct ($start = true) { $this->start(); } //Return the time private function get_time() { return $this->time; } //Return the last time private function get_last_time() { return $this->last_time; } //Start timer and set time private function start() { $this->time = $this->last_time = $this->get_current_time(); return true; } //Return the current time in microseconds private function get_current_time() { //Return time $mtime = explode(" ",microtime()); return $mtime[1] + $mtime[0]; } //Measure total time elapsed since last time public function measure_intermediate ($round = 3) { $time = round ($this->get_current_time() - $this->get_last_time(), $round); $this->last_time = $this->get_current_time(); return $time; } //Measure total time public function measure_elapsed ($round = 3) { return round ($this->get_current_time() - $this->get_time(), $round); } } |
Eine recht einfach gestrickte Klasse, dafür aber nicht minder nützlich
Super script, klappt sehr gut.
Vielen Dank.
Habe den script benutzt, um die Geschwindigkeiten von PHP 5.3.0 (32 vs 64 bit) und 5.2.10 vs 5.2.9 zu testen.
Hi Lunar,
ein kleiner Rechtschreibfehler mag behoben werden:
“Vergangene Zeit seit” statt “Vergangene Zeit seid”.
Merkhilfe: Immer dann, wenn das Wörtchen “seit” einen zeitlichen Bezug hat, also etwas mit Zeit zu tun hat, dann endet es mit “t”, sozusagen “seit” wie “Zeit”, z. B. “seit dem Urknall”.
In anderen Fällen endet “seid” mit “d”, z. B. “seid ihr alle da?”.
Mit netten Grüßen
Karl
Hi Karl,
danke für den Hinweis
Ich habe diesen Fehler soeben behoben.
Liebe Grüsse