echo mit ” oder ‘ – was ist schneller?

Dieser Artikel ist (nicht) nur für Ulf, der in seinem letzten Kommentar meinte:

echo oder print, ” oder ‘ machen nun wirklich keinen bemerkenswerten Performanceunterschied aus

Ob das stimmt habe ich dann mal genauer untersucht. Hier mein Code-Schnipsel, in dem ich je nach Test das “echo” durch “print” bzw das ” durch ‘ ersetzt habe. Ich habe bewusst nicht alles in ein Testscript geschrieben, weil ich festgestellt hatte, dass immer die Tests, die im hinteren Teil des Scripts standen unglaubwürdig lange gebraucht hatten:

$t=microtime(true);
for ($x=0;$x<1000;$x++)
  {
  echo "JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ";
  }
echo '<br />'.(microtime(true)-$t).' s';

Ergebnis:

Echo und “: ca. 2,5s
Echo und ‘: ca. 2,1s
Print und “: ca. 2,5s
Print und ‘: ca. 2,1s

Fazit

Ich konnte keinen Performance-Unterschied zwischen Print oder Echo feststellen. Der Unterschied zwischen ” und ‘ ist auf jedenfall vorhanden – wenn auch nicht groß (Man darf nicht vergessen, dass ich zum Testen einen Extremfall (extrem viel Text) verwendet hatte).

Martin-Kiesewetter hat 4 Beiträge geschrieben

14 Kommentare zu “echo mit ” oder ‘ – was ist schneller?

  1. macx sagt:

    Interessant wäre es gewesen, wenn Variabeln innerhalb des Strings ausgewertet werden müssen. Aber auch da kann ich mir die Antwort denken: Single Quote gewinnt. Ist in meinen Augen auch sauberer.

  2. Tobias Herkula sagt:

    Ist doch aber auch verständlich Strings in Single Quotes müssen doch schneller sein, weil der ganze Schritt des überprüfens auf Variabeln und Steuerzeichen entfällt.

    Kommt ein solcher string kann er direkt durchgereicht werden.

  3. GhostGambler sagt:

    Die Erfahrung hat gezeigt, dass es in regelmäßigen Abständen “Benchmarks” gibt, in welchen mal Variante ” oder auch Variante ‘ schneller ist.
    Der Wechsel der PHP-Version kann schon zum Kippen der Verteilung führen.

    Bevor also jemand auf die Idee kommt seine gesamten Programmierungen jetzt zu refaktorieren, sollte er sich lieber eine TK-Pizza in den Ofen schieben.

  4. Na ja jeder von uns weiß, wie so das so ist. Da der Server direkt bei der Ausgabe mit ” nach variablen im Echo Bereich beziehungsweise Print Bereich sucht. Es wäre hier an dieser Stelle interessant, die Performance zu testen mit Ausgabe von Variablen, dieses Ergebnis könnte danach ein wenig anders aussehen. Auf jeden Fall finde ich diesen Test sehr schön und hoffe auf weitere Tests von dir. Mit freundlichen Grüßen Nico

  5. Ulf sagt:

    Mir ging es bei meinem letzten Kommentar vor allem um die teilweise gewagten Aussagen in dem Google-Artikel. Jedes Caching, Optimierung von Datenbank-Queries usw. ist effektiver und sinnvoller als print mit echo und ” mit ‘ zu ersetzen. Man sollte beim Optimieren von Webseiten wirklich die Falschenhälse finden und nicht in solche minimalen Sachen seine teure Zeit investieren.

    Ich finde es vor allem schade, dass so ein große Publikations-Plattform wie der Google-Blog solche Sachen veröffentlicht.

    Viele Grüße
    Ulf

    P.S. Ich verwende im übrigen selbst immer echo und ‘. Hatte kurzfristig mal mit ” in Einbeziehung der CURL-Syntax geliebäugelt, gefiel mir dann aber auch nicht mehr.

  6. Stefan sagt:

    Versucht doch mal, eine Seite so zu erstellen, dass am Ende nur ein echo oder print benutzt werden muss, dann ist diese Frage auch überflüssig, was nun wirklich schneller ist.

    Gruß und ein schönes Wochenende.

  7. ich finde GhostGambler’s idee, dass die Geschwindigkeit von der PHP-Version abhängen könnte interessant: Meine Tests basieren auf PHP 5.2.5
    Wäre schön, wenn mal jemand andres den Test (mit meinem Testscript) wiederholen könnte…
    Im übrigen ist echo, print, “, und ‘ auch nur zum Feinschliff-Tuning da (also wenns um die letzte 1000stel Sekunde geht (in David’s verlinktem Post gehts ja sogar um μs))…also nicht der Mühe wert seine ganzen Projekte umzubauen…man könntes aber bei “Neuprogrammierungen” beachten und eventuell gehts ja auch in Fleisch und Blut über…dann denkt man garnicht mehr darüber nach

  8. Ganz ehrlich sagt:

    Ganz ehrlich…

    der Test hier ist genauso aussagekräftig wie.. keine Ahnung.. wie *nichts* eben.

    Erstmal kann man single quotes nicht einfach überall reinschrauben wo man gerade Lust hat. Die double quotes sind zum Teil einfach praktischer. Eine einfache Umstellung von dbl. zu sing. bringt es nicht. Nicht zu vergessen: dbl quotes wurden extra für ihre Anwendung optimiert.

    Dann würde ich ja für Benchmarks lieber einen ordentlichen Profiler verwenden – und mal ganz abgesehen davon haben wir den Interpreter, das Betriebssystem, etc. als Faktoren, die man bei PHP nicht einfach ignorieren kann – vor allem nicht bei so minimalen Preformanzunterschieden!!! Schon vierschiedene Compiler dürften Binaries erzeugen, die unter sich verschieden schnell operieren.
    Einfach mal dasselbe als mod_php in Apache und im CLI ausprobieren- und das dann mit verschiedenen PHP Versionen usw.. Generell sollten bei dem durchgeführten Test single Quotes immer einen Tick schneller sein. Aber auch NUR bei dem durchgeführten test, wo keine Variablen etc. eingebaut sind.

    Wen der Unterschied wirklich interessiert, probiert das Ganze selbst mit nem ordentlichen Profiler aus – auf seinem Produktivsystem. PHP ist aber im vergleich zu anderen interpretierten Sprachen soo lahm, dass dieser unbedeutende Unterschied garnicht als solcher Bezeichnet werden darf.

    Es gibt wirklich 10 mal bessere Möglichkeiten seinen Code auf Vordermann zu bringen: bitte keine Zeit verschwenden mit dem Quatsch – Artikel = sinnlos.

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>