Heim  >  Artikel  >  Backend-Entwicklung  >  Mehrere Tipps zur Verbesserung der PHP-Leistungseffizienz

Mehrere Tipps zur Verbesserung der PHP-Leistungseffizienz

angryTom
angryTomnach vorne
2019-10-28 17:52:133091Durchsuche

Mehrere Tipps zur Verbesserung der PHP-Leistungseffizienz

Was die Verbesserung der Effizienz betrifft, führen oft dieselben Funktionen, aber unterschiedliche Codes oft zu sehr unterschiedlichen Effizienzen.

● Verwenden Sie einfache Anführungszeichen anstelle von doppelten Anführungszeichen, um Zeichenfolgen einzuschließen, was schneller ist. Da PHP nach Variablen in Zeichenfolgen sucht, die von doppelten Anführungszeichen umgeben sind, ist dies in einfachen Anführungszeichen nicht möglich. Hinweis: Nur Echo kann dies tun, es ist eine „Funktion“, die mehrere Zeichenfolgen als Parameter annehmen kann (Anmerkung: PHP-Handbuch Es wird gesagt, dass Echo ist eine Sprachstruktur, keine echte Funktion, daher wird die Funktion in doppelte Anführungszeichen gesetzt).

● Wenn Sie eine Klassenmethode als statisch definieren können, versuchen Sie, sie als statisch zu definieren, und ihre Geschwindigkeit wird um fast das Vierfache erhöht.
$row[’id’] ist 7-mal schneller als $row[id’].

● echo ist schneller als print und verwendet mehrere Parameter von echo (Anmerkung: bezieht sich auf die Verwendung von Kommas anstelle von Punkten) anstelle einer Zeichenfolgenverkettung, wie echo $str1, $str2.

● Bestimmen Sie die maximale Anzahl von Schleifen, bevor Sie die for-Schleife ausführen. Berechnen Sie nicht den Maximalwert für jede Schleife. Verwenden Sie stattdessen am besten foreach. Heben Sie die Registrierung ungenutzter Variablen, insbesondere großer Arrays, auf, um Speicher freizugeben.

● Vermeiden Sie die Verwendung von __get, __set, __autoload.

● require_once() ist teuer. Versuchen Sie, beim Einschließen von Dateien absolute Pfade zu verwenden, da dies die Geschwindigkeit der PHP-Suche nach Dateien in include_path vermeidet und das Parsen des Betriebssystempfads weniger Zeit in Anspruch nimmt.

● Wenn Sie wissen möchten, wann das Skript ausgeführt wird (Anmerkung: Der Server empfängt die Client-Anfrage), ist die Verwendung von $_SERVER[‘REQUEST_TIME’] besser als time().

● Funktionen ersetzen reguläre Ausdrücke, um dieselbe Funktion zu erfüllen. Die Funktion str_replace ist schneller als die Funktion preg_replace, aber die Funktion strtr ist viermal effizienter als die Funktion str_replace.

● Wenn eine String-Ersetzungsfunktion Arrays oder Zeichen als Parameter akzeptiert 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 einen zu schreiben Codezeile, die Arrays als Parameter zum Abfragen und Ersetzen akzeptiert.
Die Verwendung selektiver Verzweigungsanweisungen (Übersetzung: Groß-/Kleinschreibung wechseln) ist besser als die Verwendung mehrerer if, else if-Anweisungen.

● Die Verwendung von @ zum Blockieren von Fehlermeldungen ist sehr ineffizient, äußerst ineffizient.

● Aktivieren Sie das mod_deflate-Modul von Apache, um die Browsing-Geschwindigkeit von Webseiten zu verbessern.

● Die Datenbankverbindung sollte geschlossen werden, wenn Sie mit der Verwendung fertig sind. Verwenden Sie keine langen Verbindungen.

● Fehlermeldungen sind teuer.

● Das Erhöhen lokaler Variablen in Methoden ist am schnellsten. Fast so schnell wie der Aufruf lokaler Variablen in einer Funktion. Das Erhöhen einer globalen Variablen ist doppelt so langsam wie das Erhöhen einer lokalen Variablen. Das Erhöhen einer Objekteigenschaft (z. B. $this->prop++) ist dreimal langsamer als das Erhöhen einer lokalen Variablen. Das Erhöhen einer undefinierten lokalen Variablen ist 9 bis 10 Mal langsamer als das Erhöhen einer vordefinierten lokalen Variablen. 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 eine globale Variable vorhanden ist.

● 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. Methoden in einer abgeleiteten Klasse werden schneller ausgeführt als dieselbe Methode, die in einer Basisklasse definiert ist. Der Aufruf einer leeren Funktion mit einem Argument dauert so lange wie das 7- bis 8-fache Erhöhen der lokalen Variablen. Ein ähnlicher Methodenaufruf erfordert fast 15 Inkrementierungsoperationen für lokale Variablen.

● Die Zeit, die Apache zum Parsen eines PHP-Skripts benötigt, ist zwei- bis zehnmal langsamer als das Parsen einer statischen HTML-Seite. Versuchen Sie, mehr statische HTML-Seiten und weniger Skripte zu verwenden. 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.

● Versuchen Sie, so viel wie möglich zwischenzuspeichern. Sie können Memcached verwenden. Memcached ist ein leistungsstarkes Speicherobjekt-Caching-System, mit dem dynamische Webanwendungen beschleunigt und die Datenbanklast reduziert werden kann. Das Zwischenspeichern von OP-Codes ist nützlich, damit Skripte nicht für jede Anfrage neu kompiliert werden müssen.

● 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 relativ schnell ausgeführt, da sie keine Berechnungen durchführt und lediglich die bekannte Zeichenfolgenlänge 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.

● Wenn die Variable $i erhöht oder verringert wird, 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ä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, die nicht über Befehlsoptimierer verfügen.

● Es muss nicht alles objektorientiert sein (OOP). Objektorientiert ist oft sehr teuer und jede Methode und jeder Objektaufruf verbraucht viel Speicher.
Nicht alle Datenstrukturen müssen mit Klassen implementiert werden, auch Arrays sind nützlich.

● Teilen Sie die Methoden nicht zu sehr auf. Überlegen Sie genau, welchen Code Sie wirklich wiederverwenden möchten. Sie können den Code bei Bedarf jederzeit in Methoden aufteilen.

● Versuchen Sie, so viele integrierte PHP-Funktionen wie möglich zu verwenden. Wenn Ihr Code viele zeitaufwändige Funktionen enthält, können Sie erwägen, diese als C-Erweiterungen zu implementieren. 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.

● mod_zip kann als Apache-Modul verwendet werden, um Ihre Daten sofort zu komprimieren und das Datenübertragungsvolumen um 80 % zu reduzieren.

● Wenn file_get_contents anstelle von file, fopen, feof, fgets und anderen Methodenreihen verwendet werden kann, versuchen Sie, file_get_contents zu verwenden, da dies viel effizienter ist! Bitte beachten Sie jedoch das PHP-Versionsproblem von file_get_contents, wenn Sie eine URL-Datei öffnen.

● Führen Sie so wenige Dateioperationen wie möglich durch, obwohl die Dateioperationseffizienz von PHP nicht gering ist Wählen Sie eine SQL-Anweisung aus und führen Sie so wenige Einfüge- und Aktualisierungsvorgänge wie möglich aus.

● Verwenden Sie so viele interne PHP-Funktionen wie möglich.

● Versuchen Sie, keine verschachtelten Zuweisungen in Schleifen für mehrdimensionale Arrays zu verschachteln.

● Verwenden Sie keine regulären Ausdrücke, wenn Sie die internen String-Manipulationsfunktionen von PHP verwenden können foreach ist effizienter. Versuchen Sie, foreach anstelle von while- und for-Schleifen zu verwenden. ● „Verwenden Sie i+=1 anstelle von i=i+1. Es entspricht den Gewohnheiten von c/c++ und ist effizienter.“ ;

● Globale Variablen sollten nach der Verwendung deaktiviert werden

Weitere PHP-Kenntnisse finden Sie auf der

PHP-Chinese-Website

!

Das obige ist der detaillierte Inhalt vonMehrere Tipps zur Verbesserung der PHP-Leistungseffizienz. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:www.yidianphp.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen