Das englische Copyright der Einleitung liegt bei Reinhold Weber, und die chinesische Übersetzung wurde von Yangyang (alias Davidkoree) verfasst. Die zweisprachige Version kann für die nichtkommerzielle Verbreitung verwendet werden, allerdings müssen der Autor der englischen Version, Copyright-Informationen und der Autor der chinesischen Übersetzung angegeben werden. Das Übersetzungsniveau ist begrenzt, bitte korrigieren Sie mich.
1. Wenn eine Methode statisch gemacht werden kann, deklarieren Sie sie statisch. Die Geschwindigkeit kann auf das 4-fache erhöht werden.
2.Echo ist schneller als Drucken.
3. Verwenden Sie mehrere Parameter von echo (Übersetzung: bezieht sich auf die Verwendung von Kommas anstelle von Punkten) anstelle der Zeichenfolgenverkettung.
4. Bestimmen Sie die maximale Anzahl von Schleifen, bevor Sie die for-Schleife ausführen, und berechnen Sie nicht bei jeder Schleife den Maximalwert.
5. Heben Sie die Registrierung ungenutzter Variablen auf, insbesondere großer Arrays, um Speicher freizugeben.
6. Vermeiden Sie die Verwendung von __get, __set, __autoload.
7.require_once() ist teuer.
8. Verwenden Sie beim Einschließen von Dateien den vollständigen Pfad. Das Auflösen des Betriebssystempfads nimmt weniger Zeit in Anspruch.
9. Wenn Sie wissen möchten, wann das Skript ausgeführt wird (Anmerkung: Der Server empfängt die Client-Anfrage), ist es besser, $_SERVER['REQUEST_TIME'] als time() zu verwenden.
10. Funktionen ersetzen reguläre Ausdrücke, um dieselbe Funktion zu vervollständigen.
11. Die Funktion str_replace ist schneller als die Funktion preg_replace, aber die Funktion strtr ist viermal effizienter als die Funktion str_replace.
12. Wenn eine String-Ersetzungsfunktion Arrays oder Zeichen als Parameter akzeptieren kann und die Parameterlänge nicht zu lang ist, können Sie erwägen, einen zusätzlichen Ersetzungscode zu schreiben, sodass jeder übergebene Parameter ein Zeichen ist, anstatt nur eine Zeile zu schreiben Code, der ein Array als Parameter für Abfragen und Ersetzungen akzeptiert.
13. Es ist besser, eine selektive Verzweigungsanweisung (Übersetzungsanmerkung: Groß-/Kleinschreibung wechseln) zu verwenden, als mehrere if-else-if-Anweisungen zu verwenden.
14. Die Verwendung von @ zum Blockieren von Fehlermeldungen ist sehr ineffizient.
15. Öffnen Sie das mod_deflate-Modul von Apache.
16. Die Datenbankverbindung sollte geschlossen werden, wenn Sie mit der Verwendung fertig sind.
17.$row['id'] ist 7-mal effizienter als $row[id].
18. Fehlermeldungen sind teuer.
19. Versuchen Sie, keine Funktionen in for-Schleifen zu verwenden. Beispielsweise ruft for ($x=0; $x < count($array); $x) bei jeder Schleife die Funktion count() auf.
20. Das Erhöhen lokaler Variablen in Methoden ist am schnellsten. Fast so schnell wie der Aufruf lokaler Variablen in einer Funktion.
21. Das Erhöhen einer globalen Variablen ist zweimal langsamer als das Erhöhen einer lokalen Variablen.
22. Das Erhöhen einer Objekteigenschaft (z. B. $this->prop++) ist dreimal langsamer als das Erhöhen einer lokalen Variablen.
23. Das Erhöhen einer undefinierten lokalen Variablen ist 9 bis 10 Mal langsamer als das Erhöhen einer vordefinierten lokalen Variablen.
24. Das bloße Definieren einer lokalen Variablen, ohne sie in der Funktion aufzurufen, verlangsamt ebenfalls die Geschwindigkeit (im gleichen Maße wie das Erhöhen einer lokalen Variablen). PHP wird wahrscheinlich prüfen, ob eine globale Variable vorhanden ist.
25. Methodenaufrufe scheinen unabhängig von der Anzahl der in der Klasse definierten Methoden zu sein, da ich 10 Methoden hinzugefügt habe (sowohl vor als auch nach dem Testen der Methode) und es keine Leistungsänderung gab.
26. Methoden in abgeleiteten Klassen werden schneller ausgeführt als dieselben Methoden, die in Basisklassen definiert sind.
27. Der Aufruf einer leeren Funktion mit einem Parameter dauert so lange wie das 7- bis 8-fache Erhöhen lokaler Variablen. Ein ähnlicher Methodenaufruf erfordert fast 15 Inkrementierungsoperationen für lokale Variablen.
28. Verwenden Sie einfache Anführungszeichen anstelle von doppelten Anführungszeichen, um Zeichenfolgen einzuschließen, was schneller ist. Da PHP nach Variablen in einer Zeichenfolge sucht, die von doppelten Anführungszeichen umgeben ist, ist dies bei einfachen Anführungszeichen nicht der Fall. Dies ist natürlich nur möglich, wenn Sie keine Variablen in die Zeichenfolge einfügen müssen.
29. Wenn Sie mehrere Zeichenfolgen ausgeben, verwenden Sie Kommas anstelle von Punkten, um die Zeichenfolgen zu trennen, was schneller ist. Hinweis: Nur echo kann dies tun. Es handelt sich um eine „Funktion“, die mehrere Zeichenfolgen als Parameter annehmen kann (Anmerkung: Im PHP-Handbuch heißt es, dass echo eine Sprachstruktur und keine echte Funktion ist, daher wird die Funktion in doppelte Anführungszeichen gesetzt.) .
30.Apache analysiert ein PHP-Skript zwei- bis zehnmal langsamer als das Parsen einer statischen HTML-Seite. Versuchen Sie, mehr statische HTML-Seiten und weniger Skripte zu verwenden.
31. Sofern das Skript nicht zwischengespeichert werden kann, wird es bei jedem Aufruf neu kompiliert. Durch die Einführung eines PHP-Caching-Mechanismus kann die Leistung normalerweise um 25 bis 100 % verbessert werden, um den Kompilierungsaufwand zu eliminieren.
32. Versuchen Sie, so viel wie möglich zwischenzuspeichern. Sie können Memcached verwenden. Memcached ist ein leistungsstarkes Speicherobjekt-Caching-System, mit dem sich dynamische Webanwendungen beschleunigen und die Datenbanklast reduzieren lassen. Das Zwischenspeichern von OP-Codes ist nützlich, damit Skripte nicht für jede Anfrage neu kompiliert werden müssen.
33. Wenn Sie eine Zeichenfolge bearbeiten und überprüfen müssen, ob ihre Länge bestimmte Anforderungen erfüllt, verwenden Sie natürlich die Funktion strlen(). Diese Funktion wird recht schnell ausgeführt, da sie keine Berechnungen durchführt und lediglich die bekannte Länge der Zeichenfolge zurückgibt, die in der zval-Struktur (der in C integrierten Datenstruktur zum Speichern von PHP-Variablen) gespeichert ist. Da strlen () jedoch eine Funktion ist, ist es etwas langsam, da der Funktionsaufruf viele Schritte durchläuft, z. B. Kleinbuchstaben (Anmerkung: Bezieht sich auf den Funktionsnamen in Kleinbuchstaben. PHP unterscheidet nicht zwischen Funktionsnamen in Groß- und Kleinbuchstaben ), Hash-Suche, Wird zusammen mit der aufgerufenen Funktion ausgeführt. In einigen Fällen können Sie den isset()-Trick verwenden, um die Ausführung Ihres Codes zu beschleunigen.
(Beispiel unten)
if (strlen($foo) < 5) { echo „Foo ist zu kurz“$$ }
(Vergleichen Sie mit den Tipps unten)
if (!isset($foo{5})) { echo „Foo is too short“$$ }
Der Aufruf von isset() ist zufällig schneller als strlen(), da isset() im Gegensatz zu letzterem ein Sprachkonstrukt ist dass für seine Ausführung keine Funktionssuche und keine Kleinschreibung von Buchstaben erforderlich sind. Das bedeutet, dass Sie im Code der obersten Ebene tatsächlich nicht viel Aufwand für die Überprüfung der Zeichenfolgenlänge aufwenden müssen.
34. Beim Erhöhen oder Verringern der Variablen $i ist $i++ langsamer als ++$i. Dieser Unterschied ist spezifisch für PHP und gilt nicht für andere Sprachen. Ändern Sie also bitte nicht Ihren C- oder Java-Code und erwarten Sie, dass er sofort schneller ist, da er sonst nicht funktioniert. ++$i ist schneller, da nur 3 Anweisungen (Opcodes) erforderlich sind, während $i++ 4 Anweisungen erfordert. Nach dem Inkrementieren wird tatsächlich eine temporäre Variable erstellt, die anschließend inkrementiert wird. Das Präfixinkrement erhöht sich direkt auf den ursprünglichen Wert. Dies ist die höchste
35. Nicht unbedingt objektorientiert (OOP). Objektorientiert ist oft teuer und jede Methode und jeder Objektaufruf verbraucht viel Speicher.
36. Nicht alle Datenstrukturen müssen in Klassen implementiert werden, auch Arrays sind sinnvoll.
37. Unterteilen Sie die Methoden nicht zu sehr. Überlegen Sie genau, welchen Code Sie wirklich wiederverwenden möchten.
38. Sie können Code bei Bedarf jederzeit in Methoden aufteilen.
39. Versuchen Sie, eine große Anzahl integrierter PHP-Funktionen zu verwenden.
40. Wenn Ihr Code viele zeitaufwändige Funktionen enthält, können Sie erwägen, diese als C-Erweiterungen zu implementieren.
41. Profilieren Sie Ihren Code. Der Prüfer sagt Ihnen, welche Teile des Codes wie viel Zeit in Anspruch nehmen. Der Xdebug-Debugger umfasst Inspektionsroutinen, die die Gesamtintegrität Ihres Codes bewerten und Engpässe in Ihrem Code aufdecken.
42.mod_zip kann als Apache-Modul verwendet werden, um Ihre Daten sofort zu komprimieren und das Datenübertragungsvolumen um 80 % zu reduzieren.
43. Eine Art Optimierungsprozess, wie er vom PHP-Optimierer von Zend durchgeführt wird. Es empfiehlt sich, diese Optimierung im Hinterkopf zu behalten, da nicht alle Befehlsoptimierer die gleichen Optimierungen durchführen und es eine große Anzahl von Internetdienstanbietern (ISPs) und Servern gibt, auf denen keine Befehlsoptimierer installiert sind. Ein weiterer großartiger Artikel zur Optimierung von PHP, geschrieben von John Lim.