PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : echo vs print


Cerberus
09.11.2008, 22:18
so -- da hier scheinbar alle darauf rumreiten (aus welchem Grunde auch immer) habe ich mir mal Fach kompetenten Rat geholt ...
http://www.peppies-life.de/2008/07/17/php-echo-vs-print-benchmark/

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:
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
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:
$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:
$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


so -- ich bleibe damit bei Print ...
da ich auf einer Seite in einem Aufruf wohl kaum die 10.000er Marke je knacken werde ...


Wems net gefällt, der möge auf echo -- oder Misch-Code umsteigen ...


Nur Misch-Code ist KEINE Saubere Programmierung !!

gotthummer
09.11.2008, 22:24
Genau so seh ich es auch :):wink:

Solstice
09.11.2008, 22:28
Na lol... ich hab jetz auch noch nen Glossar dazugemacht... etwas detaiilierter... aber ok... :confuse:

Doppelt hält besser.
php, echo oder Php tags? (http://www.netvision-technik.de/forum/glossary.php?do=viewglossary&term=14)

mfg,
Sol