2009-03-19 6 views
12

Gibt es Geschwindigkeitsunterschiede zwischen diesen beiden Versionen?

<?php echo $var; ?> 

<?=$var?> 

Welche empfehlen Sie und warum?

+2

Ich mag die kurze Syntax. Es ist sauberer. – gradbot

+2

kompilieren Sie einfach php mit dem Flag --zomg-optimize –

Antwort

17

Der Leistungsunterschied ist unbedeutend. Bei Verwendung von APC ist die Leistungsdifferenz gleich null, null, nada.

<?=$var?>erfordert kurze Tags aktiviert. Kurze Tags sind innerhalb von XML problematisch, da <? auch Markup für XML-Verarbeitungstag ist. Wenn Sie also Code schreiben, der tragbar sein soll, verwenden Sie das Langformular.

Siehe short_open_tag Beschreibung in http://www.php.net/manual/en/ini.core.php

+0

Sie haben Recht, ich mag tragbaren Code schreiben. danke alle 4 Antworten. – grilix

+1

Ich benutze immer die Kurzform. Wenn ich jemals Code ausführen muss, wo es nicht aktiviert ist oder wenn ich für XML (von denen keiner jemals passiert ist) muss, ist es ein einfacher Fall von s/ cletus

+4

@cletus: bei allem Respekt, du hast keine Idee. – vartec

4

Nein, sie sind identisch. Wenn Sie gerne viel tippen, verwenden Sie <?php echo $var; ?>, ansonsten sparen Sie einfach Zeit mit <?=$var?>.

7

Technisch muss der Parser jedes Zeichen der längeren Version analysieren, und es gibt ein paar mehr Zeichen für jede Übertragung.

Wenn Ihr Webserver nicht "vorkompiliert" (dh cache-tokenisierte PHP-Seiten), dann gibt es einen kleinen Leistungsunterschied. Dies sollte unbedeutend sein, außer vielleicht, wenn Sie anfangen, über Milliarden von Läufen zu reden.

-Adam

+1

Wenn Sie Milliarden von Runs haben, werden Sie PHP sowieso nicht benutzen. – tstenner

+0

@tstenner: Facebook stimmt nicht mit dir überein. – TheTXI

+0

Werfen Sie genügend Hardware auf ... Es gibt Zeiten, in denen die Entwicklerzeit teurer sein kann als mehr Hardware, und es ist nicht sinnvoll, den gesamten Code für eine bessere Leistung zu refaktorieren, wenn Sie einfach durch die Hardware skalieren können. Dennoch, sie verwenden PHP-Optimierer ... –

6

Leistung ist es unbedeutend.

Korrekte Verwendung sagt die längere zu verwenden, da es tragbarer ist. Persönlich? Ich mache den kürzeren.

+0

+1 für exakt die gleichen Gedanken – David

5

in PHP 5.3 Kurz Tag ASP-<%%> Unterstützung wird veraltet, versuchen dies zu vermeiden und um den Code zu dem '<?php echo' format zu umschreiben, weil u <?xml ?> inline zum Beispiel verwenden kann nicht.

+0

Noch eine geniale Idee von denen bei PHP ...: | –

+0

Soweit ich weiß, wird es nicht entfernt, wenn es standardmäßig ausgeschaltet wird. Da ist ein Unterschied. –

+0

Was macht die Antwort mehr oder weniger FUD. Nett. – chaos

3

Ich denke, die zweite erfordert die short_open_tag (in PHP.ini) auf True festgelegt werden.

Das bedeutet, es ist möglich, dass es bei einigen Webservern deaktiviert ist.

+0

Warum wird dies aktualisiert? Er fragte ausdrücklich nach einem Leistungsvergleich, die Frage hatte nichts mit Portabilität zu tun. Dies beantwortet die Frage in keiner Weise, sie versucht es auch nicht. – meagar

3

Welche Sie

auch nicht empfehlen, es sei denn, Sie HTML-Injektion zulassen möchten wirklich. (99% der Zeit, nicht wahr.)

<?php echo htmlspecialchars($var); ?> 

Oder eine Funktion definieren, Echo tut (htmlspecialchars ($ arg)) mit einem kürzeren Namen alle, dass die Eingabe zu vermeiden.

+1

An diesem Punkt habe ich alle Variablen sauber und sicher :) .. So muss ich es nur ausdrucken .. – grilix

+1

@bobince Das ist ein schwerer Fall von Paranoia ... verwenden Sie htmlspecialchars() auf ALLEN vars ? –

+0

@jcinacio - Wenn die Variable an den Client zurückgegeben wird und nicht absichtlich so konstruiert wurde, dass sie HTML enthält, dann sollten Sie sie wirklich zuerst codieren. Es ist möglicherweise ein * sehr * ernstes Sicherheitsproblem. –

2

Der Geschwindigkeitsunterschied hängt davon ab, wie schnell Sie diese 9 zusätzlichen Zeichen eingeben können.
Es kann auch die Lesbarkeit Ihres Codes verbessern, aber das ist umstritten.

Wenn Sie über Ausführungsgeschwindigkeit sprechen, gibt es keinen bemerkbaren Unterschied.

1

Versuchen Sie nicht, mit diesen zu optimieren, es ist nutzlos.Deaktivieren Sie stattdessen allow_short_tags (wegen Problemen beim Laden von XML-Dateien) und schreiben Sie sauberen, lesbaren und verständlichen Code.

Auch wenn es einen kleinen Unterschied (der definitiv unter 10% ist) gibt, ist es sinnvoll, damit zu optimieren. Wenn deine Skripte langsam sind, schau dir zuerst deine Loops an. Die meiste Zeit können Sie viel mehr Leistung gewinnen, indem Sie den Programmablauf optimieren, als wenn Sie eine seltsame Syntax verwenden.

+0

10% sind * viele * Größenordnungen höher als die tatsächliche Leistungseinbuße, unter der Sie ' meagar