Heim  >  Artikel  >  Backend-Entwicklung  >  Effiziente Programmierung: Einführung in die PHP-Optimierungsrichtlinien

Effiziente Programmierung: Einführung in die PHP-Optimierungsrichtlinien

不言
不言nach vorne
2018-10-25 17:00:252468Durchsuche

In diesem Artikel geht es um hocheffiziente Programmierung: PHP-Optimierungsrichtlinien, die einen gewissen Referenzwert haben. Ich hoffe, dass sie für Sie hilfreich sind.

  • Verwenden Sie weniger reguläre Ausdrücke

str_replace -Funktion ist viel schneller als preg_replace , strtr Funktion ist schneller als str_replace .

strpbrk()、strncasecmp()、strpos()、strrpos()、stripos()、strripos()。
  • Zeichenersetzung

str_replace Zeichenersetzung ist schneller als normale Ersetzung preg_replace, aber strtr ist schneller als str_replace 1 / 4.

Nehmen Sie außerdem keine unnötigen Ersetzungen vor. str_replace reserviert Speicher für seine Parameter, auch wenn keine Ersetzung erfolgt. Sehr langsam!

Verwenden Sie strpos, um zuerst (sehr schnell) zu suchen, um zu sehen, ob es ersetzt werden muss, und wenn ja, ersetzen Sie es.

Wenn ein Austausch erforderlich ist, ist die Effizienz nahezu gleich, der Unterschied beträgt etwa 0,1 %.

Wenn kein Ersatz benötigt wird: strpos 200 % schneller verwenden.

  • Variable $_SERVER verwenden

Wenn Sie die Skriptausführungszeit benötigen, ist $_SERVER['REQUSET_TIME'] besser als time().

Einer ist fertig und kann direkt verwendet werden, der andere benötigt das Ergebnis der Funktion.

  • Verwenden Sie ++$i, um

zu erhöhen, wenn Sie die Erhöhung der Variablen oder Beim Verringern ist $i langsamer als $i++. ++$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.

ist schneller, da nur 3 Anweisungen (Opcodes) erforderlich sind, während ++$i 4 Anweisungen erfordert. $i++

  • Große Zeichenfolgen komprimieren

Verwenden Sie gzcompress() und gzuncompress(), um große Zeichenfolgen zu komprimieren. Anschließend komprimieren und dekomprimieren

Speichern und Abrufen der Datenbank .

Diese integrierte Funktion verwendet den gzip-Algorithmus, um Zeichenfolgen zu komprimieren

. 90%

  • Dateiinhalt lesen

Sie können file_get_contents() anstelle von

, file(), , fopen() und andere Methodenreihen verwenden, versuchen Sie, feof() zu verwenden. fgets()file_get_contents()

  • Echo-Ausgabe

  • Echo-String verwendet
Komma

anstelle des Punktverbinders, um es schneller zu machen . Obwohl

ein Sprachkonstrukt ist, keine echte Funktion.

echoEs können jedoch mehrere durch Kommas getrennte Zeichenfolgen als „Funktions“-Parameter übergeben werden, sodass es schneller geht.

205e1d64d6d51d07893e96715d4e5c2dDadurch kann verhindert werden, dass PHP nach dem End-Tag versehentlich Leerzeichen oder Zeilenumbrüche hinzufügt, was dazu führt, dass PHP mit der Ausgabe dieser Leerzeichen beginnt, und es besteht derzeit keine Absicht, sie im Skript auszugeben.

  • Verwenden Sie niemals

    und register_globalsmagic quotes

  • Dies sind zwei sehr alte Funktionen, die möglicherweise vorhanden sind war damals (vor zehn Jahren) ein guter Ansatz, aber heute scheint es nicht mehr der Fall zu sein.

Ältere Versionen von PHP aktivieren diese beiden Funktionen standardmäßig bei der Installation, was zu Sicherheitslücken, Programmierfehlern und anderen Problemen führen kann.

Variablen werden beispielsweise nur erstellt, wenn der Benutzer Daten usw. eingibt.

Beide Funktionen wurden seit PHP 5.4.0 aufgegeben, daher sollte jeder Programmierer die Verwendung vermeiden.

Wenn Ihre früheren Programme diese beiden Funktionen verwendet haben, löschen Sie sie so schnell wie möglich.

  • Verwenden Sie absolute Pfade

  • Versuchen Sie, absolute Pfade in
und

zu verwenden. includerequireWenn es einen relativen Pfad enthält, durchläuft PHP die Datei, um sie in

zu finden. Durch die Verwendung absoluter Pfade werden solche Probleme vermieden und die Pfadauflösung nimmt weniger Zeit in Anspruch.

Versuchen Sie, require_once und include_once nicht zu verwenden, um Dateien einzuschließen. Sie verfügen über einen zusätzlichen Prozess, um festzustellen, ob auf die Datei verwiesen wird. Versuchen Sie, sie nach Möglichkeit nicht zu verwenden.

wird durch die Methoden require und include ersetzt.

  • Funktionen sind schneller als Klassenmethoden

Der Aufruf einer Funktion mit nur einem Parameter und einem leeren Funktionskörper kostet Zeit ist gleich 7-8 mal $localvar++ Operationen.

Die Klassenmethode mit derselben Funktion erfordert etwa 15 $localvar++ Operationen.

  • Unterklassenmethoden verwenden

Fügen Sie nur wiederverwendbare Methoden in die Basisklasse ein und versuchen Sie, andere Funktionen in die Unterklasse einzufügen In einer Klasse implementiert, ist die Leistung der Methode in der Unterklasse besser als die in der Basisklasse.

  • Parameter als Referenz übergeben

Verwenden Sie Parameteradressenreferenzen, um mehrere Rückgabewerte der Funktion zu erreichen ist besser als die Übergabe von Parametern per Referenz. Die Wertübertragung ist effizient. Die Methode besteht darin, & vor der Parametervariablen hinzuzufügen.

  • Machen Sie es so statisch wie möglich

Wenn eine Methode statisch sein kann, deklarieren Sie sie als statisch, die Geschwindigkeit kann verbessert werden 1/4, selbst als ich es getestet habe, hat sich dies um fast das Dreifache verbessert.

Der Hauptunterschied in der Effizienz zwischen statischen und nicht statischen Methoden ist der Speicher. Statische Methoden generieren Speicher, wenn das Programm startet, und Instanzmethoden (nicht statische Methoden) generieren Speicher, während das Programm ausgeführt wird.

Statische Methoden können also direkt aufgerufen werden, während Instanzmethoden zuerst eine Instanz erstellen und dann aufrufen müssen. Statische Methoden sind sehr schnell, aber zu viele Methoden belegen Speicher .

Jede Sprache arbeitet auf Speicher und Festplatte. Ob sie objektorientiert ist oder nicht, ist nur eine Frage der Softwareschicht. Die unterste Ebene ist dieselbe, aber die Implementierungsmethode ist unterschiedlich.

Statischer Speicher ist kontinuierlich, da er zu Beginn des Programms generiert wird, während Instanzmethoden für diskreten Speicherplatz gelten, sodass er natürlich nicht so schnell ist wie statische Methoden.

Statische Methoden rufen immer den gleichen Speicher auf. Der Nachteil besteht darin, dass sie nicht automatisch zerstört werden können, aber die Instanziierung kann zerstört werden.

Das obige ist der detaillierte Inhalt vonEffiziente Programmierung: Einführung in die PHP-Optimierungsrichtlinien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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