Teil von  SELFPHP
Professional CronJob-Service

Suche

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: SELFPHP Forum ::

Fragen rund um die Themen PHP?
In über 130.000 Beiträgen finden Sie sicher die passende Antwort!  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

:: Qozido ::

Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.   

 
 
Performance (Zeit) von Befehlen testen

Am Ende der Seite finden Sie das komplette Beispiel als Download.

Systemvoraussetzung

  • Linux
  • Windows
  • PHP 3
  • PHP 4
  • PHP 5
  • wahlweise MySQL

Datei(en)

timer.php, timerSQL.php, timerSQL.sql

Problem


Sie kennen sicher das Problem, dass man für eine zu lösende Aufgabe mehrere Varianten (PHP-Befehle, MySQL-Abfragen, allgemeine Routinen) zur Verfügung hat. Da stellt sich die Frage, wie schnell die einzelnen Lösungen sind. Ziel sollte es immer sein, Rücksicht auf die Performance zu nehmen und somit eine schnelle und vor allem reibungslose Darstellung zu gewährleisten.


Lösung

Das folgende Beispiel berechnet die Zeit für die Ausführung einer bestimmten Aufgabe und gibt den Wert in Sekunden zurück. In unserem Beispiel wurde dabei eine FOR-Schleife 10 Millionen Mal durchlaufen. Bei den einzelnen Durchläufen passierte nichts Besonderes, es sollte lediglich eine Arbeit verrichtet werden. Wenn Sie das Skript auf Ihrem Server ausführen, tasten Sie sich langsam an die Menge der Durchläufe heran – nehmen Sie nicht unbedingt 10 Millionen, sondern fangen erst mit z. B. 1 Million Durchläufen an.

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:
function startTime(){
    
    
$timeExplode explode(" "microtime());
    
$time $timeExplode[1] + $timeExplode[0];

    return 
$time;

}

function 
endTime($timer){

    
$timeExplode explode(" "microtime());
    
$time $timeExplode[1] + $timeExplode[0];
    
$finish $time $timer;
    
$endTime sprintf("%4.3f"$finish); 
  
    return 
$endTime;

}

// Startet den Timer
$timer startTime();

for(
$x=0;$x<10000000;$x++){
    
// Hier passiert nichts!
}

// Beendet den Timer
$endTime endTime($timer);

echo 
$endTime ' Sekunden';

Beispiel 2.23: timer.php


Ausgabe

16.971 Sekunden

Im nachfolgenden Beispiel wird anhand einer MySQLAbfrage der Unterschied der Laufzeiten der PHPBefehle mysql_fetch_row() und mysql_fetch_ array() ermittelt.

Dabei soll die Frage geklärt werden, wie lange beide Befehle für die Darstellung von 8420 Datensätzen benötigen. Um einen genaueren Wert zu erhalten, haben wir das Skript insgesamt 6-mal durchlaufen lassen.

Sie finden für dieses Beispiel die passende Datenbank zum Testen im Verzeichnis Datenbanken unter dem Namen timerSQL.sql. Sie können diese Datei direkt mit phpMyAdmin einlesen.

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:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
function startTime(){
    
    
$timeExplode explode(" "microtime());
    
$time $timeExplode[1] + $timeExplode[0];
  
  return 
$time;

}

function 
endTime($timer){

    
$timeExplode explode(" "microtime());
    
$time $timeExplode[1] + $timeExplode[0];
  
$finish $time $timer;
  
$endTime sprintf("%4.3f"$finish); 
  
  return 
$endTime;

}

// Definiert die Parameter für den Datenbank Connect
define("DB_HOST","localhost"); // MySQL hostname
define("DB_NAME","datenbankname"); //MySQL db-name
define("DB_USER","benutzer"); //MySQL User
define("DB_PASS","passwort"); // MySQL Passwort

// Datenbank Connect herstellen
$db = @MYSQL_CONNECT(DB_HOST,DB_USER,DB_PASS
      or die(
"Datenbank momentan nicht erreichbar");
$db_check = @MYSQL_SELECT_DB(DB_NAME
       or die(
"Datenbank momentan nicht erreichbar");

// Holt alle Datensätze  - insgesamt 100 
$result = @mysql_query("SELECT * FROM statistik_pageviews");
$result1 = @mysql_query("SELECT * FROM statistik_pageviews");

// Startet den Timer
$timer startTime();

while(
$row = @mysql_fetch_row($result)){
    
// Hier findet die Ausgabe des Seiteninhalts statt
    
$contentWeb .= $row[0] . ' -- ' $row[1] . '<br>';
}

// Beendet den Timer
$endTime endTime($timer);

echo 
$endTime ' Sekunden für mysql_fetch_row <br>';

// Startet den Timer
$timer startTime();

while(
$row mysql_fetch_array($result1)){
  
$contentWeb .= $row['id'] . ' -- ' $row['seite'] . '<br>';
}

// Beendet den Timer
$endTime endTime($timer);

echo 
$endTime ' Sekunden für mysql_fetch_array <br>';

Beispiel 2.24: timerSQL.php


Ausgabe

0.081 Sekunden für mysql_fetch_row
0.111 Sekunden für mysql_fetch_array
0.133 Sekunden für mysql_fetch_row
0.181 Sekunden für mysql_fetch_array
0.138 Sekunden für mysql_fetch_row
0.169 Sekunden für mysql_fetch_array
0.085 Sekunden für mysql_fetch_row
0.118 Sekunden für mysql_fetch_array
0.132 Sekunden für mysql_fetch_row
0.209 Sekunden für mysql_fetch_array
0.097 Sekunden für mysql_fetch_row
0.114 Sekunden für mysql_fetch_array

Sie können mit diesen beiden Beispielen jeweils die Laufzeit in Sekunden berechnen. Falls Sie also einmal nicht sicher sein sollten, welcher Befehl der schnellere ist, binden Sie einfach die beiden Funktionen ein und testen Ihr Skript.



 


Dieses Skript aus dem SELFPHP KOCHBUCH wurde von SELFPHP unter dem "Tarif Mc500" von McAc.net-Webhosting erfolgreich ausgeführt und getestet!

Auf der Übersichtseite unter "McAc.net – Webhosting zu diesem Buch" finden Sie weitere Informationen zu dem Webhostingpaket, dass durch SELFPHP getestet wurde.




 

Download

Info   ZIP BZIP2 TARGZ
Größe   71.94 Kilobyte 45.48 Kilobyte 71.26 Kilobyte

Alle Beispiele als PHP-Datei(en)

Hier haben Sie die Möglichkeit, sich sämtliche auf dieser Seite gezeigten Beispiele als PHP-Dateien direkt downzuloaden.

Umständliches Copy & Paste ist daher nicht mehr notwendig, da alle Beispiele sofort ausprobiert werden können.

Sie haben bei der Auswahl der bereitgestellten Downloads mehrere Möglichkeiten, je nachdem welches Komprimierungsverfahren Sie bevorzugen.

Zurück zur Übersichtsseite


 




:: Premium-Partner ::

Webhosting/Serverlösungen

PSW GROUP GmbH & Co. KG weitere Premium-Partner
 

:: SELFPHP Sponsor ::

ionCube Ltd. weitere Sponsoren
 


:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Webhosting/Serverlösungen

Suchen Sie den für Sie passenden IT-Dienstleister für Ihr Webhosting-Paket oder Ihre Serverlösung?

Sie sind nur ein paar Klicks davon entfernt!


 

Ausgewählter Tipp im Bereich PHP-Skripte


FlatFile Based Login System

Weitere interessante Beispiele aus dem SELFPHP Kochbuch finden Sie im Bereich PHP-Skripte
 

SELFPHP Code Snippet


Einen Farbwert in den negativen Farbwert umrechnen

Weitere interessante Code Snippets finden Sie auf SELFPHP im Bereich PHP Code Snippets
 
© 2001-2016 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt
© 2005-2016 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de