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
ist schneller, da nur 3 Anweisungen (Opcodes) erforderlich sind, während ++$i
4 Anweisungen erfordert. $i++
Große Zeichenfolgen komprimieren
Speichern und Abrufen der Datenbank .
Diese integrierte Funktion verwendet den gzip-Algorithmus, um Zeichenfolgen zu komprimieren. 90%
Dateiinhalt lesen
, file()
, , fopen()
und andere Methodenreihen verwenden, versuchen Sie, feof()
zu verwenden. fgets()
file_get_contents()
anstelle des Punktverbinders, um es schneller zu machen . Obwohl
ein Sprachkonstrukt ist, keine echte Funktion.echo
Es können jedoch mehrere durch Kommas getrennte Zeichenfolgen als „Funktions“-Parameter übergeben werden, sodass es schneller geht.
und schlecht konzipierte Autoload-Funktionen führen zu einer Verringerung seiner Effizienz.
autoload
Vermeiden Sie daher die Verwendung magische Methoden wie
__autoload
Idealerweise sollte die Fehlerberichterstattung in der php.ini-Datei vollständig deaktiviert sein.
Wenn Sie einen gemeinsam genutzten virtuellen Host verwenden, kann php.ini nicht geändert werden. Fügen Sie am besten die Funktion error_reporting() hinzu.
wird in die erste Zeile jeder Skriptdatei eingefügt oder mit
geladen, wodurch vertrauliche SQL-Abfragen und -Pfade wirksam geschützt werden können und nicht angezeigt wird, wenn ein Fehler auftrittrequire_once()
?>Dadurch 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. </p>
<p></p>
<ul class=" list-paddingleft-2">
<li>Verwenden Sie niemals <p> und <strong><code>register_globals
magic quotes
Ä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.
zu verwenden. include
require
Wenn es einen relativen Pfad enthält, durchläuft PHP die Datei, um sie in
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!