Optimierung mit Echo und richtiger Verwendung von Anführungszeichen

Bei der einfachen Ausgabe von Text innerhalb Ihres PHP-Scripts gibt es unterschiedliche Möglichkeiten, die unterschiedliche Auswirkungen auf die Performance Ihrer Website haben. Wir haben die gängigsten Varianten einem Benchmark unterzogen. Die Ergebnisse zeigen Ihnen, auf was bei der Programmierung mit PHP zu achten ist, um maximale Performance zu erreichen.

echo String

Code:

<?php
for ($i = 0;$i < 10000;$i++) {
    echo "Beispiel";
}
?>

Erläuterung:
Innerhalb einer for()-Schleife wird 10.000mal der String Beispiel mit dem echo-Konstrukt ausgegeben.

echo Variable

Code:

<?php
$test = "Beispiel";
for ($i = 0;$i < 10000;$i++) {
    echo $test;
}
?>

Erläuterung:
Im Unterschied zum ersten Script-Beispiel wird in diesem Code vor Durchlaufen der Schleife einer Variablen $test der Wert Beispiel zugewiesen. Innerhalb der Schleife wird Beispiel nicht mehr direkt als String, sondern mittels der Variablen $test ausgegeben.

echo Variable in Anführungszeichen

Code:

<?php
$test = "Beispiel";
for ($i = 0;$i < 10000;$i++) {
    echo "$test";
}
?>

Erläuterung:
Dies ist unser erstes Negativ-Beispiel. Wie im vorangegangenen Code wird der Variablen $test der Wert Beispiel zugewiesen. Der Unterschied liegt in der Ausgabe. An das innerhalb der Schleife aufgerufene echo-Konstrukt wird nun die von Anführungszeichen eingeschlossene Variable $test übergeben.

echo String und Variable

Code:

<?php
$test = "Beispiel";
for ($i = 0;$i < 10000;$i++) {
    echo "Beispiel " . $test;
}
?>

Erläuterung:
Dieses Script ist eine Kombination aus den ersten beiden Beispiel-Codes auf dieser Seite. Es kann jedoch nicht mit ihnen vergliechen werden, weil mehr als doppelt so viel Text mit echo ausgegeben wird, nämlich einmal der String Beispiel gefolgt von einem Leerzeichen und der ebenfalls das Wort Beispiel enthaltenen Variable $test.

echo String und Variable in Anführungszeichen

Code:

<?php
$test = "Beispiel";
for ($i = 0;$i < 10000;$i++) {
    echo "Beispiel $test";
}
?>

Erläuterung:
Diesen Beispiel-Code möchten wir mit dem vorangegangenen vergleichen. Die Variable test steht hier innerhalb der Anführungszeichen, die für die Ausgabe des Strings Beispiel verwendet werden.

String in HTML

Code:

<?php
for ($i = 0;$i < 10000;$i++) {
?>Beispiel<?
}
?>

Erläuterung:
Dieser Code führt zum gleichen Ergebnis wie die ersten drei auf dieser Seite aufgeführten Beispiel-Scripte. Das Wort Beispiel wird innerhalb einer Schleife 10.000mal ausgegeben. Im Unterschied zu den vorangegangenen Scripten erfolgt die Ausgabe des Wortes via HTML an Stelle des echo-Konstrukts.

String in HTML, Variable in PHP

Code:

<?php
$test = "Beispiel";
for ($i = 0;$i < 10000;$i++) {
?>Beispiel <?
echo $test;
}
?>

Erläuterung:
Dieser Code bewirkt das gleiche wie die beiden Scripte echo String und Variable und echo String und Variable in Anführungszeichen. Der Unterschied ist, dass das Wort Beispiel via HTML ausgegeben wird, der Wert der Variablen $test mittels des PHP-Konstrukts echo.

Ergebnis

Requests per second (RPS)Time per Request (TPR)Vergleich
echo String121.95 [#/sec] (mean)8.200 [ms] (mean)
43.7%
30.4%
echo Variable127.90 [#/sec] (mean)7.819 [ms] (mean)
50.8%
33.7%
echo Variable in Anführungszeichen99.27 [#/sec] (mean)10.073 [ms] (mean)
17.0%
14.5%
echo String und Variable90.91 [#/sec] (mean)11.000 [ms] (mean)
7.2%
6.7%
echo String und Variable in Anführungszeichen84.84 [#/sec] (mean)11.788 [ms] (mean)
String in HTML142.00 [#/sec] (mean)7.042 [ms] (mean)
67.4%
40.3%
String in HTML, Variable in PHP101.35 [#/sec] (mean)9.867 [ms] (mean)
19.5%
16.3%

Die Ausgabe eines Wortes als Wert einer Variable mit dem echo-Konstrukt ist unwesentlich schneller als die Ausgabe des selben Wortes als String. Beide sind jedoch rund 25% schneller als der Code, bei dem die Variable in Anführungszeichen an das echo-Konstrukt übergeben wird. Noch einmal rund 15% schneller als die beiden erstgenannten Varianten ist die Ausgabe des Wortes via HTML.
Ebenso verhält es sich bei der Ausgabe einer „Mischung” aus einem String und einer Variablen. Auch hier ist die schnellste Variante, den festen Text via HTML auszugeben und die Variable in PHP ohne Anführungszeichen. Der langsamste Code ist wiederum der, bei dem String und Variable in Anführungszeichen an das echo-Konstrukt übergeben werden.

Fazit

Bei der einfachen Ausgabe von Variablen sollte unbedingt darauf geachtet werden, dass diese nicht in Anführungszeichen stehen. Wenn ein sich nicht ändernder Text ausgegeben werden soll, ist die Ausgabe via HTML am schnellsten.

 

Anmerkung:
Die Tests wurden mit dem Apache HTTP server benchmarking tool ab auf einem im heute nicht mehr dem Stand der Technik entsprechenden Server durchgeführt. Die RPS und TPR der getesteten PHP-Scripte sollten auf einem im Produktiv-Einsatz befindlichen Webserver deutlich besser sein.

Des Weiteren hat PHP nachgebessert. phpbench.com zeigt, dass es kaum Performance-Unterschied zwischen einfachen und doppelten Anführungszeichen gibt. Die Interpolation ist also zumindest kein großer Performance-Killer.

Nächster Tipp

Ist eine Variable definiert, die Zahl 0, ungleich 0? Lässt sich bei diesen Prüfungen die Performance verbessern?

Optimierung mit empty und Vergleichsoperatoren bei Zahlen

Optimierung mit empty und Vergleichsoperatoren bei Zahlen

Um den einer Variablen zugeordneten Zahlenwert zu ermitteln und Bedingungen für die weitere Verarbeitung anzugeben, stehen in PHP unterschiedliche Operatoren zur Verfügung. Wir haben einige Scripts mit den beliebtesten Varianten erstellt und diese einem Benchmark-Test unterzogen, um festzustellen, ob sich durch Wahl unterschiedlicher Varianten Auswirkungen auf die Performance ergeben.