PHP-Code einleiten: Shorttag vs.

Die beiden gängigsten Varianten, um PHP-Code einzuleiten sind <? und <?php. Immer wieder hört man von Gerüchten, eine Schreibweise wäre falsch oder die andere wäre schneller. Tatsächlich ist es so, dass der Shorttag die Konfigurations-Einstellung PHP short_open_tag als aktiviert voraussetzt. Fakt ist allerdings auch, dass wir seit 2001 beinahe keine Installation von PHP-Software auf einem Server vorgenommen haben, auf dem die kurze Schreibweise nicht unterstützt worden wäre.

Wir haben zwei Benchmarks durchgeführt und versucht festzustellen, ob tatsächlich eine der beiden Schreibweisen schneller ist:

<?php ?>

Code:

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

Erläuterung:
Innerhalb einer Schleife mit 10.000 Durchläufen wird zunächst der PHP-Code abgeschlossen und nach Ausgabe des Wortes html mit wieder geöffnet, um das Ende der for()-Schleife zu markieren.

Short-Tag

Code:

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

Erläuterung:
Im Unterschied zum vorangehend zitierten Script-Code wird der für das Ende der Schleife verantwortliche Code als Short-Tag eingeleitet.

Ergebnis

Requests per second (RPS)Time per Request (TPR)Vergleich
141.59 [#/sec] (mean)7.063 [ms] (mean)
2.4%
2.4%
Short-Tag138.23 [#/sec] (mean)7.234 [ms] (mean)

Wir haben die Benchmark-Tests mehrfach durchgeführt. Die oben gezeigten Ergebnisse entsprechen etwa dem Durchschnittsergebnis, wobei auch in einigen Fällen die Short-Tag-Variante die besseren Werte erzielte.

Fazit

Die 2,4% Zeitersparnis des Einleitungs-Tags bei unserem Benchmark-Test sind unseres Erachtens auf Zufall bzw. äußeren Bedingungen basierend und zu vernachlässigen. Wir halten die beiden Varianten zur Einleitung von PHP-Code daher für gleich schnell.

 

Anmerkung:
Die Tests wurden mit dem Apache HTTP server benchmarking tool ab auf einem im Februar 2017 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.

Nächster Tipp: