Dies mag eine dumme Frage sein, aber als jemand, der relativ neu in PHP ist, frage ich mich, ob es leistungsbedingte Probleme beim häufigen Öffnen und Schließen von PHP-Tags im HTML-Vorlagencode gibt und wenn ja, welche Best Practices dies möglicherweise sind mit PHP-Tags zu arbeiten?
Meine Frage bezieht sich nicht auf die Wichtigkeit / Richtigkeit des Schließens von Tags oder darauf, welcher Codetyp besser lesbar ist als ein anderer, sondern vielmehr darauf, wie das Dokument analysiert / ausgeführt wird und welche Auswirkungen es auf die Leistung haben könnte.
Betrachten Sie zur Veranschaulichung die folgenden zwei Extreme:
Mischen von PHP- und HTML-Tags:
<?php echo
'<tr>
<td>'.$variable1.'</td>
<td>'.$variable2.'</td>
<td>'.$variable3.'</td>
<td>'.$variable4.'</td>
<td>'.$variable5.'</td>
</tr>'
?>
// PHP tag opened once
Trennen von PHP- und HTML-Tags:
<tr>
<td><?php echo $variable1 ?></td>
<td><?php echo $variable2 ?></td>
<td><?php echo $variable3 ?></td>
<td><?php echo $variable4 ?></td>
<td><?php echo $variable5 ?></td>
</tr>
// PHP tag opened five times
Würde mich interessieren, einige Ansichten dazu zu hören, auch wenn es nur zu hören ist, dass es keinen Unterschied macht.
Vielen Dank.
Antworten:
3 einfache Regeln, damit Sie es richtig machen:
Leistungsprobleme sind ziemlich schwer zu verstehen. Es wird den Neulingen empfohlen, dies nicht zu berücksichtigen. Weil sie immer von Kleinigkeiten beeindruckt sind und keine wirklich wichtigen Dinge sehen. Nur weil es an Erfahrung mangelt.
Gleiches gilt für Ihre Frage. Stellen Sie sich vor, Sie werden jemals einen Unterschied bekommen. Selbst eine große Methode ist beispielsweise zweimal schneller. Oh mein Gott, 2 mal! Ich habe es ausgewählt und meine App gut optimiert, sie läuft jetzt 50% schneller!
Falsch . Nicht 50%. Sie würden diese Geschwindigkeitssteigerung nie bemerken oder sogar messen. Weil Sie einen Teil optimiert haben, der nur 0,0001% der gesamten Skriptlaufzeit beansprucht.
Bei den großen HTML-Tabellen dauert es lange, bis der Browser sie rendert. Viel mehr als Sie benötigt haben, um zu generieren.
Profiling ist ein Schlüsselwort in der Performance-Welt. Man kann jede leistungsbezogene Frage ohne Zweifel in den Papierkorb werfen, wenn sie kein Wort "Profiling" enthält. Gleichzeitig ist die Profilerstellung keine Raketenwissenschaft. Ich messe nur die Laufzeit verschiedener Teile Ihres Skripts. Kann mit einem Profiler wie xdebug oder sogar manuell mit verwendet werden
microtime(1)
. Und erst nachdem Sie den langsamsten Teil erkannt haben, können Sie mit Tests beginnen.Lernen Sie das Profilieren, bevor Sie Leistungsfragen stellen. Und lernen Sie, keine Leistungsfragen zu stellen, wenn es keine wirklichen Gründe dafür gibt.
Vorzeitige Optimierung ist die Wurzel allen Übels - D.Knuth .
quelle
Ich habe die Tests mit 50.000 Zeilen wiederholt und das Multi-Echo auch in der 1-Tag-Methode hinzugefügt
Dauer1: 31.15542483 Sekunden
Dauer2: 30.23169804 Sekunden
Dauer3: 27.54640007 Sekunden
Kein großer Unterschied zwischen den ursprünglichen 2 Methoden, aber es sieht so aus, als ob es mit weniger Verkettung @poke ziemlich viel schneller ist
Da ich bezweifle, dass ich so viele Daten auf einmal benötige, werde ich wahrscheinlich weiterhin viele Tags verwenden, die Codeeinrückung sieht ordentlicher aus und das Layout der Quellquelle genauer
quelle
echo
akzeptiert mehrere Ausdrücke ausgegeben werden. In den Metriken wurde keine Variante mit dieser Funktion berücksichtigt.Sie können den Leistungsunterschied zwischen diesen beiden leicht ignorieren. Bei den modernen Computerressourcen von heute spielt der Unterschied keine Rolle. Diese Art von Print-to-Screen-Material ist wirklich kein Grund zur Sorge. Es gibt Unmengen anderer Dinge, über die Sie vorher nachdenken sollten. Abgesehen davon gibt es immer eine Debatte zwischen der besten Leistung und der Wartbarkeit Ihres Codes. Sie können nicht immer versuchen, die beste Leistung zu erzielen. Stattdessen sollten Sie immer Leistungsprobleme zusammen mit der Zeit berücksichtigen, die Sie für deren Verbesserung benötigen.
quelle
Code, der leicht in Pseudocode zu übersetzen ist, ist besser. Dies wird durch die obigen Beispiele belegt. Was dauert länger zu sagen?
Persönlich würde ich tun:
Eine technische Erklärung darüber, wie der Dolmetscher funktioniert und warum ein Weg schneller als der andere ist, ist für einen Neuling irrelevant. Es ist am besten, nur die Faustregeln zu kennen:
Verwenden Sie mehr Tags, wenn das Gesamtergebnis einfacher ist. Zeitraum.
quelle
Das eigentliche Problem dabei ist die Speichernutzung. String-Verkettung und Massenecho können die Speichernutzung exponentiell erhöhen.
Wenn Sie das PHP-Tag als Spam versenden, wird Ihr Code unlesbar.
Die beste Lösung besteht darin, eine Template-Engine zu verwenden und das Mischen von Code und Präsentation insgesamt zu vermeiden.
quelle