Ausgabefunktionen – echo vs print vs printf

Die wohl häufigste Funktion einer PHP-Anwendung ist bestimmt die Ausgabe von Text / HTML auf dem Bildschirm. PHP bietet dafür echo, print und printf, wobei die Mehrheit der PHP-Entwickler (inklusive mir) – glaube ich – echo benutzt. Gibt es bei diesen Funktionen Geschwindigkeitsunterschiede oder sind es wirklich Synonyme?
Hier noch kurz der Vollständigkeit halber die Funktionen, wie sie auch im Benchmark zum Einsatz kommen:

$var1 = "PHP";
$var2 = "MySQL";
 
//echo.php
echo "Bei PHP Performance gehts hauptsächlich um ".$var1.", aber auch um ".$var2;
//print.php
print "Bei PHP Performance gehts hauptsächlich um ".$var1.", aber auch um ".$var2;
//printf.php
printf("Bei PHP Performance gehts hauptsächlich um %s, aber auch um %s",$var1,$var2);

Der Umgang mit echo und print ist denkbar einfacher als mit printf(), da man die Variablen an der Stelle einfügen kann, an der sie gebraucht werden und nicht erst hinterher wie bei printf, aber wir wollen ja alle Möglichkeiten betrachten.

Auswertung:
Früher (bis PHP3) war print tatsächlich schneller als echo. Mittlerweile ist der Unterschied aber sehr klein bis nicht mehr sichtbar. Beide Funktionen sind gleich schnell und weit schneller als printf.

Datei Gesamtlaufzeit durchschnittliche Laufzeit pro Durchlauf Verhältnis zur schnellsten Variante
result_echo.php 33.998888 s 3.400 ms 100%
result_print.php 34.139090 s 3.414 ms 100%
result_printf.php 46.396716 s 4.640 ms 136% (+36%)

Neben den hohen Laufzeiten – printf ist über ein Drittel langsamer als echo und print – spricht eben auch die oben erwähnte Umständlichkeit beim Umgang mit printf gegen diese Variante.

Merke: print und echo sind gleich schnell und können je nach persönlicher Vorliebe verwendet werden. Man sollte sich allerdings innerhalb einer Anwendung für eine Variante entscheiden, sonst wirds unübersichtlich.

Zum Nachprüfen gibt es hier die Quelltexte für die PHP-Ausgabefunktionen.
Und zum Nachlesen die Apache Benchmark Ergebnisse für die Ausgabefunktionen

Jan hat 152 Beiträge geschrieben

8 Kommentare zu “Ausgabefunktionen – echo vs print vs printf

  1. Andreas sagt:

    Ein weiterer Grund für die Langsamkeit von printf() liegt auch darin, dass echo und print keine Funktionen sondern Anweisungen bzw. Sprachkonstrukte sind, printf() dagegen eine „vollwertige“ Funktion mit entsprechend mehr „Overhead“.

  2. admin sagt:

    Diese Seite kenne ich. Hier muss man ganz doll aufpassen, denn hier wird der Benchmark durch PHP selbst durchgeführt.
    Außerdem erfolgt der Test dort nicht automatisch sondern es können einige Sekunden bis Minuten zwischen den Tests zweier Dateien liegen (weil diese dann im Browser eingegeben werden).
    Also ohne die Ergebnisse von dort schlechtmachen zu wollen, denke ich, dass meine Ergebnisse aussagekräftiger sind.

  3. Nope sagt:

    Im Gegensatz zu echo liefert print einen Rückgabewert, damit ist

    touch ($file) || print „Kann die Datei $file nicht anlegen“;

    erlaubt, nicht aber

    touch ($file) || echo „Kann die Datei $file nicht anlegen“;

  4. Beweis sagt:

    — ECHO —

    0.04991602897644
    0.047633171081543
    0.048943996429443
    0.046703100204468

    — PRINTF —

    0.1017689704895
    0.11129188537598
    0.11049604415894
    0.12095499038696

  5. NB sagt:

    echo „bla“ , print_r($r=array(‚foo‘),true) , „blub“;

    das kann print nicht. Also „Synonyme“ nö!

Eine Antwort schreiben

Ihre E-Mail-Adresse wird nicht veröffentlicht. Benötigte Felder sind markiert mit *

You may use these HTML tags and attributes: <a href=""> <blockquote cite=""> <pre lang=""> <b> <strong> <i> <em>