27

JAN09

[PHP] echo vs. print Benchmark

Trackback URIVon Peppie in PHP, Programmierung

Ich möchte heut mal ein Benchmark zwischen den PHP-Ausgabefunktionen echo und print starten. Dazu kommt noch, verwende ich zur Ausgbe ” (doppelte Anführungsstriche) oder ‘ (einfache Anführungsstriche). Als damals Patrick bei uns in der Firma angefangen hatte, hatte er mich mal gefragt wieso ich immer “print” zur Ausgabe benutze. Ehrlich gesagt ist mir da kein “sinnvoller” Grund eingefallen, da sagte ich dann nur, das ich es viel ansprechender/übersichtlicher als echo finde …

Die Unterschiede

Konstrukt
Große Unterschiede gibt es eingetlich bei den 2 Aufrufen nicht. Print ist eine Funktion, sogar mit einem Rückgabewert, echo ist wiederum keine Funktion sondern ein Sprachkonstrukt.

Speed
Auch beim Speed gibt es nur geringe unterschiede die wir aber später noch sehen werden.

Der Aufruf

echo kann wie folgt aufgerufen werden:

1
2
3
4
<?php
echo "Zeichenkette1";
echo "Zeichenkette1","Zeichenkette2";
?>

Der Aufruf in Zeile 2 verkettet x beliebige Zeichenketten miteinander. Da print eine Funktion mit einem Parameter ist, kann man damit solch eine Verkettung nicht durchführen. Zeile 2 im folgende Beispiel soll euch zeigen wie man es mit print realisieren könnte

1
2
3
4
5
<?php
print "Zeichenkette1";
print("Zeichenkette1");
print "Zeichenkette1"."Zeichenkette2";
?>

Die einzige Möglichkeit 2 oder x Zeichenketten mit print zu verknüpfen würde hier über den . (Punkt)Operator laufen. Aber welche Ausgabemethode ist nun schneller?

Speed/Speedtest

Auf einer Seite mit 40 PHP-Optimierungen habe ich mal gelesen das echo “weitaus” schneller ist als print. Wir hatten zu dem Zeitpunkt damals dann alle, aber echt alle Ausgaben in ticCity von print auf echo umgeschrieben (es lebe die Find in Files Funktion) aber im endeffekt hat man nicht gemerkt was mich jetzt zu diesem Test und Beitrag führt. Als Beispiel habe ich eine Ausgabe generieren lassen die 10.000 mal das gleiche macht, der einzige unterschied, einmal mit echo und print. Hier der Durchschnitt der einzelnen Tests:

“echo” 0.12740409374237 Sekunden

und

“print” 0.15307259559631 Sekunden

Man kann hier richtig schön erkennen das print gut 0.05 Sekunden langsamer ist. Der erste Test lief auf doppelten Anführungsstrichen, lasst uns grad noch die Ergebnisse für die einfachen betrachten:

“echo” 0.10613601207733 Sekunden

und

“print” 0.12993469238281 Sekunden

Wir haben gegenüber den doppelten Anführungsstrichen bei dem echo einen SpeedUp von 16.6% und bei den Aufrufen mit print eine Verbesserung von 15.22%. Warum ist das so mit den doppelten Quotes? Naja ganz einfach, man hat die Möglichkeit in doppelten Anführungsstrichen Variablen zu benutzen ohne die Zeichenkette zu unterbrechen. Beispiel:

1
2
3
4
<?php
$test = "ok";
echo "Test = $test";
?>

Bei diesem Beispiel würde folgende Ausgabe erfolgen “Test = ok”. Wenn wir das ganze in einfachen Anführungsstrichen setzen dann wird uns die Variable nicht ersetzt sondern die ganze Zeichenkette so ausgegeben wir es ihm sagen. Also “Test = $Test”. Die Verlangsamung entsteht dadurch weil der php-Interpreter nach Variablen in unserer Zeichenkette sucht um diese dann zu ersetzen, was bei den einfachen nicht der Fall ist. Bei einfachen müsste das ganze so aussehen:

1
2
3
4
<?php
$test = 'ok';
echo 'Test = ' . $test;
?>

Fazit

Also wenn es nach mir ginge dann würde ich ja lieber wieder komplett auf prints umstellen. Ich programmiere immer mit einfachen Anführungesstrichen und in kombination mit einem print sind wir so schnell wie echo mit doppelten. Also finde ich macht es keinen großen Unterschied ob print oder echo. Selbst im Bereich einer Community habe ich bis jetzt noch nicht gehört das man UMBEDINGT auf echo’s umstellen sollte ;-)

Peppie
Über den Autor:
Vor mehr als 7 Jahren habe ich mein Hobby zum Beruf gemacht. Seit her bekommt mich kein Problem so schnell in die Knie, ich bin sehr verbissen und arbeite solange an einem Problem bis es gelöst ist.

Ähnliche Artikel:

Kommentar schreiben

;) :( :) :D :P :o :| ^^ :> :< :cry: :S xD


Blogverzeichnis - Blog Verzeichnis bloggerei.de frisch gebloggt Blog Top Liste - by TopBlogs.de Bloggeramt.de Add to Technorati Favorites Dennis bei Xing Wikio - Top Blog UrlFan.com