PHP & MySQL Engineering

Geschwindigkeit eines PHP Scripts messen

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 Icon Wink in Geschwindigkeit eines PHP Scripts messen

 

Kommentare: 3

Kommentar hinterlassen »

 
 
 

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

 
 

Kommentar hinterlassen

 
(Wird nicht veröffentlicht)
 
(rel="follow")
 
Kommentar *
 
Vier + Fünf =