Heim Backend-Entwicklung PHP-Problem Warum ist PHP langsam?

Warum ist PHP langsam?

Sep 16, 2019 pm 03:47 PM
php

Warum ist PHP langsam?

Warum ist PHP langsam?

PHP ist im Vergleich zu Sprachen auf C/C++-Niveau langsam. Tatsächlich ist es das ursprüngliche Design der PHP-Sprache nicht zur Lösung rechenintensiver Anwendungsszenarien verwendet. Wir können ungefähr verstehen, dass PHP die Ausführungseffizienz opfert, um die Entwicklungseffizienz zu verbessern. (Empfohlenes Lernen: PHP-Programmierung vom Einstieg bis zur Kompetenz)

Wir wissen, dass eine große Funktion von PHP die schwache Typfunktion ist, das heißt, ich kann eine Variable definieren nach Belieben und weisen Sie es dann nach Belieben verschiedenen Datentypen zu. Nehmen wir als Beispiel eine int-Ganzzahl in der C-Sprache:

int num = 200;//通常是4字节
Nach dem Login kopieren

Wenn PHP jedoch dieselbe Variable definiert, lautet die tatsächliche entsprechende Speicherstruktur:

Diese Struktur wird viel belegen mehr Speicher als C-Variablen. Es ist in PHP wie folgt definiert:

$a = 200;//这变量将实际占用对比C变量很多倍的存储空间。
Nach dem Login kopieren

Tatsächlich gilt für PHP, egal welche Art von Daten gespeichert werden, das obige „ Die Strukturimplementierung von „Tong Kill“ . Um mit dem Variablentyp „Intrusion“ von PHP-Programmierern kompatibel zu sein, war PHP freundlich zu Entwicklern, aber grausam gegenüber der Ausführungs-Engine. Der Speicherverbrauch einer einzelnen Variablen ist möglicherweise noch nicht offensichtlich. Sobald PHP-Arrays verwendet werden, steigt die Komplexität exponentiell (die Implementierung von Arrays ist HashTable).

Wenn dann die Zend-Engine ausgeführt wird, werden diese PHP-Codes in Opcode (PHPs Zwischenbytecode, das Format ähnelt in gewisser Weise Assembler) kompiliert, der von der Zend-Engine Zeile für Zeile interpretiert und ausgeführt wird.

Ob es sich um den Verbindungsvorgang von Zeichenfolgen oder die einfache Änderung von Arrays usw. handelt, es ist fast der Rhythmus von „Ein Wort eines PHP-Programmierers, und die Zend-Engine bricht zusammen“. Daher verbraucht PHP für denselben Vorgang mehr Systemressourcen wie CPU und Speicher als C. Darüber hinaus gibt es automatisches Speicherrecycling, Variablentypbeurteilung usw., was den Verbrauch von Systemressourcen erhöht.

Zum Beispiel habe ich die Schnellsortierungsfunktion und die in reinem PHP implementierte native Sortierfunktion verwendet, um 10.000 Ganzzahlen zu sortieren, um einen zeitaufwändigen Vergleich durchzuführen:

Die Die native Sortierung dauert 3,44 ms, während die Sortierung unserer eigenen PHP-Funktion 68,79 ms dauert. Wir haben festgestellt, dass zwischen beiden eine große Lücke in der Ausführungseffizienz besteht.

Meine Art zu testen besteht darin, das Zeitintervall vor und nach der Ausführung der Funktion zu berechnen, nicht die Zeit vom Anfang bis zum Ende des gesamten PHP-Skripts. Der Prozess zum Starten und Herunterfahren des PHP-Skripts selbst erfordert eine Reihe von Initialisierungs- und Bereinigungsarbeiten, die ebenfalls viel Zeit in Anspruch nehmen.

Normalerweise ist die Rangfolge der PHP-Ausführungseffizienz:

Am schnellsten ist die PHP-Sprachstruktur (isset, echo usw.), Teil der PHP-Sprache ( sie sind grundsätzlich keine Funktion).

Dann sind die nativen und erweiterten Funktionen von PHP die schnelleren. Die auf der Zend-API basierende PHP-Erweiterung implementiert Funktionen in C und ihre Ausführungseffizienz liegt in der gleichen Größenordnung wie C++/Java.

Was wirklich langsam ist, ist der Code und die Funktionen, die wir selbst über PHP schreiben. Wenn wir beispielsweise ein relativ umfangreiches Framework verwenden, das in reinem PHP implementiert ist, verringert dies offensichtlich die Ausführungseffizienz auf Sprachebene und belegt mehr Speicher, da das Framework selbst über viele Module verfügt. (Das inländische Yaf-Framework wird erweitert implementiert, sodass die Ausführungseffizienz viel schneller ist als die eines in reinem PHP geschriebenen Frameworks.)

Unter normalen Umständen empfehlen wir nicht, PHP zur Implementierung komplexer logischer Berechnungen zu verwenden Insbesondere in Szenarien, in denen der Websystemverkehr relativ groß ist. Daher sollten PHP-Programmierer über ein relativ umfassendes Verständnis der verschiedenen nativen Funktionen und Erweiterungen von PHP verfügen und nach mehr nativen Lösungen (nativen Schnittstellen oder Erweiterungen) suchen, anstatt selbst einen Stapel komplexer PHP-Codes zu schreiben Art der Funktionalität.

Wenn Sie über genügend Entwicklungsfunktionen für PHP-Erweiterungen verfügen, wird das Umschreiben dieser Art von Geschäftsfunktion als PHP-Erweiterung auch die Effizienz der Codeausführung erheblich verbessern. Dies ist eine sehr gute Methode und wird auch häufig in der PHP-Optimierung eingesetzt. Allerdings liegen auch die Mängel der selbst geschriebenen PHP-Geschäftsentwicklung auf der Hand:

Die Erweiterungsentwicklung dauert lange und Änderungen sind kompliziert, wenn sich die Anforderungen ändern. Schlechtes Schreiben kann die Stabilität von Webdiensten beeinträchtigen. (Wenn es beispielsweise im Worker-Modus von Apache in einem Multithread-Szenario hängt, wirkt es sich auf andere normale Unterthreads im selben Prozess aus. Wenn es sich um einen Multithread-Webmodus handelt, muss die Schreiberweiterung Thread-Sicherheit unterstützen )

Erweiterungen müssen beim Upgrade der PHP-Version möglicherweise zusätzliche Kompatibilitätsarbeiten durchführen.

Auch die Wartungs- und Übernahmekosten nach Personalwechseln sind relativ hoch.

Tatsächlich besteht die gängigere Lösung bei Frontline-Internetunternehmen nicht darin, eine PHP-Erweiterung hinzuzufügen, sondern einen unabhängigen Dienstserver in C/C++ zu schreiben und PHP dann über einen Socket mit dem Dienstserver zu kommunizieren vollständige Geschäftsabwicklung. Es koppelt PHP selbst nicht an das Geschäft.

Die meisten Leistungsengpässe von Webdiensten liegen jedoch in der zeitaufwändigen Netzwerkübertragung und anderen Dienstservern (wie MySQL usw.). Der Zeitaufwand für die Ausführung von PHP macht einen sehr geringen Anteil aus Das ist insgesamt zeitaufwändig, daher sind die Auswirkungen aus geschäftlicher Sicht möglicherweise nicht offensichtlich.

Das obige ist der detaillierte Inhalt vonWarum ist PHP langsam?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

CakePHP-Kurzanleitung CakePHP-Kurzanleitung Sep 10, 2024 pm 05:27 PM

CakePHP ist ein Open-Source-MVC-Framework. Es erleichtert die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich. CakePHP verfügt über eine Reihe von Bibliotheken, um die Überlastung der häufigsten Aufgaben zu reduzieren.

Wie analysiert und verarbeitet man HTML/XML in PHP? Wie analysiert und verarbeitet man HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

See all articles