Heim  >  Artikel  >  Backend-Entwicklung  >  Fähigkeiten zur PHP-Optimierung

Fähigkeiten zur PHP-Optimierung

WBOY
WBOYOriginal
2016-08-08 09:27:411231Durchsuche
1. Wenn eine Methode statisch gemacht werden kann, deklarieren Sie sie statisch. Die Geschwindigkeit kann bis zu 4x erhöht werden. 2. Echo ist schneller als Drucken. 3. Verwenden Sie mehrere Echoparameter (Ü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. Berechnen Sie nicht bei jeder Schleife das maximale Wertepaar. Beim Durchlaufen desselben Arrays ist foreach am schnellsten und while am langsamsten. foreach ist etwa 20 bis 30 schneller als while. 5. Deregistrieren Sie nicht verwendete Variablen, insbesondere große Arrays, um Speicher freizugeben. 6. Vermeiden Sie die Verwendung von __get, __set, __autoload. 7. require_once() ist teuer, Sie können stattdessen if(!class_exists('class name')) require("file path"); verwenden . path, es dauert weniger Zeit, den Betriebssystempfad zu analysieren (Anmerkung: Der Server empfängt die Client-Anfrage). 'REQUEST_TIME. '] ist besser als time(). Die Funktion führt die gleiche Funktion anstelle regulärer Ausdrücke aus Die Effizienz der strtr-Funktion ist viermal so hoch wie die der str_replace-Funktion. 12 Wenn eine String-Ersetzungsfunktion Arrays oder Zeichen als Parameter akzeptiert, können Sie das Schreiben in Betracht ziehen ein zusätzlicher Ersetzungscode, sodass jeder übergebene Parameter ein Zeichen ist, anstatt nur eine Codezeile zu schreiben, die Arrays als Parameter für Abfrage und Ersetzung akzeptiert, 13. Verwenden Sie eine Select-Branch-Anweisung (Übersetzung: Groß-/Kleinschreibung wechseln) anstelle mehrerer if, else if-Anweisungen. >14. Die Verwendung von @ zum Maskieren von Fehlermeldungen ist sehr ineffizient. 16. Die Datenbankverbindung sollte geschlossen werden. $row['id'] ist 7-mal effizienter als $row[id] 18 Fehlermeldungen sind teuer 19 Versuchen Sie, es nicht in einer for-Schleife zu verwenden Die Funktion „for($x=0; $x < count($array); $x)“ ruft die Funktion „count()“ bei jeder Schleife auf.

20 , Geschwindigkeit. ist fast so schnell wie das Inkrementieren einer globalen Variablen

22 Objekt. Eigenschaften (z. B. $this->prop++) sind dreimal langsamer als das Erhöhen einer lokalen Variablen 23 🎜>24. Das einfache Definieren einer lokalen Variablen, ohne sie in einer Funktion aufzurufen, verlangsamt die Arbeit ebenfalls (im gleichen Maße wie das Erhöhen einer lokalen Variablen). PHP wird wahrscheinlich prüfen, ob die globale Variable existiert. 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 Argument dauert genauso lange wie das 7- bis 8-fache Erhöhen der lokalen Variablen. Ein ähnlicher Methodenaufruf erfordert fast 15 Inkremente lokaler Variablen. 28. Verwenden Sie einfache Anführungszeichen anstelle von doppelten Anführungszeichen, um Zeichenfolgen einzuschließen, was schneller ist. Denn PHP sucht nach Variablen in Zeichenfolgen, die von doppelten Anführungszeichen, aber nicht von einfachen Anführungszeichen umgeben sind. Dies ist natürlich nur möglich, wenn Sie keine Variablen in die Zeichenfolge aufnehmen 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. Verwenden Sie mehr statische HTML-Seiten und weniger Skripte. 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 In-Memory-Objekt-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 lässt sich relativ schnell ausführen, 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 is too short" } (Vergleiche mit dem Trick unten) if (!isset($foo{5})) { echo "Foo is too short"; besser als strlen() ist schnell, da isset() als Sprachkonstrukt im Gegensatz zu letzterem bedeutet, dass für seine Ausführung keine Funktionssuche und keine Kleinschreibung von Buchstaben erforderlich sind. Das heißt, Sie verbringen tatsächlich nicht viel Aufwand damit, die Stringlänge im Code der obersten Ebene zu überprüfen. 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, $i++ erfordert 4 Anweisungen. Nach dem Inkrementieren wird tatsächlich eine temporäre Variable erstellt, die anschließend inkrementiert wird. Das Präfix-Inkrement erhöht sich direkt auf den ursprünglichen Wert. Dies ist eine Form der Optimierung, wie sie 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. 35. Nicht alles muss objektorientiert (OOP) sein, objektorientiert ist oft teuer und jede Methode und jeder Objektaufruf verbraucht viel Speicher. 36. Es ist nicht notwendig, Klassen zu verwenden, um alle Datenstrukturen zu implementieren, Arrays sind auch nützlich. 37. Verbessern Sie die Wiederverwendbarkeit des Codes. 38. Sie können Code jederzeit in Methoden aufteilen, wenn Sie es brauchen. 39. Versuchen Sie, so viele integrierte PHP-Funktionen wie möglich 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 verrät 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 im laufenden Betrieb zu komprimieren und das Datenübertragungsvolumen um 80 % zu reduzieren.

Das Obige hat PHP-Optimierungskenntnisse eingeführt, einschließlich Aspekten des Inhalts. Ich hoffe, es wird für Freunde hilfreich sein, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn