
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














Andreas sagt
am 5. Juli 2007 @ 01:16
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".
Leif sagt
am 19. September 2007 @ 14:15
Laut
http://benchmark.nophia.de/benchmarks-textverarbeitung-k-2-echo-oder-print-oder-andere-ausgabefunktionen-b-5.html
ist echo fast 25% langsamer als print(). Der Test wird dort bei jedem Seitenaufruf durchgeführt.
admin sagt
am 19. September 2007 @ 14:27
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.
Die wichtigsten PHP String-Funktionen (Teil 2: Ausgabe von Strings) - Web:Manual sagt
am 9. Mai 2008 @ 15:46
[...] und sollte nicht verwendet werden, wenn die Performance wichtig ist. ( siehe dazu auch Echo vs Print vs Prinftf) Beitrag bookmarken Diese Icons verlinken auf Bookmark Dienste bei denen Nutzer neue Inhalte [...]
Nope sagt
am 25. Januar 2010 @ 00:33
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";
Alex sagt
am 17. Februar 2010 @ 22:37
Gerade gefunden: http://fabien.potencier.org/article/8/print-vs-echo-which-one-is-faster