Heim  >  Artikel  >  Backend-Entwicklung  >  Der Schlüssel zur Verdoppelung der PHP7-Leistung enthüllt

Der Schlüssel zur Verdoppelung der PHP7-Leistung enthüllt

coldplay.xixi
coldplay.xixinach vorne
2020-06-24 17:31:582460Durchsuche

Der Schlüssel zur Verdoppelung der PHP7-Leistung enthüllt

Für eine ausgereifte Sprache, die in den letzten 20 Jahren viele Überarbeitungen und unzählige Optimierungen durchlaufen hat, ist es nicht einfach, einen Durchbruch zu erzielen, der die Leistung verdoppelt. Das gab Rasmus Lerdorf offen zu Gewöhnliche neue Sprachen Es ist oft einfach, in Projekten viel Raum für Verbesserungen zu finden. Die neue Version von PHP erzielt solche Ergebnisse nicht durch die Änderung einiger Programme.

Die 20 Jahre alte erfahrene Web-Programmiersprache PHP wird bereits Ende Oktober eine neue Version von PHP 7 veröffentlichen. Dies ist die erste große Überarbeitung seit zehn Jahren. Das größte Feature ist ein großer Durchbruch in der Leistung, die besser ist als die Vorgängerversion. Rasmus Lerdorf, der Vater von PHP, sagte, dass es unter der virtuellen Maschine HHVM sogar schneller arbeiten kann.


Eine ausgereifte Sprache, die in den letzten 20 Jahren viele Überarbeitungen und unzählige Optimierungen durchlaufen hat, kann auch einen Durchbruch erzielen, der ihre Leistung verdoppelt „Es ist keine leichte Aufgabe“, sagte Rasmus Lerdorf offen gesagt. Im Gegenteil, nach vielen detaillierten Optimierungen und Leistungssteigerungen weist PHP 7 eine Ausführungsleistung auf, die der von HHVM in nichts nachsteht.

Rasmus Lerdorf und das PHP-Kernbeitragsteam haben große Anstrengungen unternommen, um die Anzahl der beim Ausführen des Programms verschobenen Speicherbits zu reduzieren und dadurch die Ausführungsleistung zu beschleunigen. Beispielsweise wird die Datenstruktur zval zum Speichern von Variablen in PHP von 24 Bit auf 16 Bit und Hashtable von 72 Bit auf 56 Bit reduziert. Die Funktionen in PHP werden überprüft, um zu prüfen, ob es Raum für Leistungsverbesserungen gibt.

Neben der Reduzierung der Speichernutzung untersuchte Rasmus Lerdorf auch das Funktionsprinzip der Cache-Zeile der CPU und verstand, wie der Programmcode mit der CPU interagiert, wie der Compiler den Programmcode unter der neuen CPU-Architektur kompiliert usw Weitere Details sind sicherzustellen. Der Programmcode von PHP 7 entspricht der Architektur moderner CPUs. Obwohl die Optimierung jedes Projekts weniger als 0,5 % zur Leistung beiträgt, da es viele Optimierungsprojekte gibt oder eine bestimmte verbesserte Funktion wiederholt von der Anwendung aufgerufen wird, kann der Gesamteffekt der Korrektur einen so großen Fortschritt machen.

Inspiriert von HHVM haben wir beschlossen, PHP mit sowohl Leistung als auch Funktionalität zu entwickeln

Um den Betrieb von PHP zu optimieren, hat Facebook die virtuelle Maschine HHVM mit JIT-Kompilierung erstellt. Obwohl HHVM über eine schnelle Ausführungsleistung verfügt, kann sein für bestimmte Zwecke optimiertes Design nur eine kleine Anzahl von Entwicklern zufriedenstellen. Im Gegenteil: Rasmus Lerdorf möchte nicht nur die Leistung von PHP verbessern, sondern gleichzeitig auch die Bedürfnisse von High-End-Benutzern und Amateurbenutzern erfüllen und PHP 7 zu einer Programmiersprache machen, die sowohl Leistung als auch allgemeine Funktionen bietet.

Es ist jedoch nicht schwierig, eine Programmiersprache zu entwickeln, die die Bedürfnisse einer kleinen Anzahl von Menschen auf dem Markt erfüllt. Das PHP-Projekt zielt jedoch auf viele Ziele ab und muss die Bedürfnisse von Amateurbenutzern und Profis erfüllen Gleichzeitig ist es für Entwickler schwierig, alles abzudecken. Es wird immer einige Gruppen geben, deren Bedürfnisse nicht befriedigt werden können völlig durchnässt sein“, sagte Rasmus Lerdorf.

Die Rechenleistung von PHP ohne den Einsatz externer Frameworks ist sehr gut. Aufgrund des Einflusses externer Frameworks hat PHP, das ursprünglich Tausende von Webseitenanfragen in wenigen Sekunden verarbeiten konnte, seine Leistung jedoch erheblich reduziert kann nur Dutzende von Webseiten verarbeiten. Rasmus Lerdorf sagte, dass sich Benutzer vor dem Aufkommen von HHVM mehr Gedanken darüber machten, ob PHP die Schwierigkeit der Webentwicklung verringern könnte als über die Leistungsanforderungen von PHP, und dass diese Frameworks die Arbeit von Entwicklern erleichtern können. Nachdem Facebook jedoch HHVM eingeführt hatte, zog es viele Benutzer an, die Wert auf die PHP-Leistung legten, was Rasmus Lerdorf klar machte, dass viele Benutzer Leistungsanforderungen haben. Er begann darüber nachzudenken, wie er die JIT-Architektur von HHVM in PHP integrieren könnte.

Aber Rasmus Lerdorf sagte, dass PHP und HHVM sich im Architekturdesign stark unterscheiden. Beispielsweise sei die Multithread-Architektur von HHVM nicht sehr stabil. Darüber hinaus ist die Portabilität von HHVM nicht gut und es ist noch weit davon entfernt, auf der Windows-Plattform ausgeführt zu werden. PHP hat viele Entwickler, die in der Windows-Umgebung entwickeln, und HHVM kann sich nicht um diese Benutzer kümmern.

Rasmus Lerdorf sagte, dass er die Hauptarchitektur von PHP nicht aufgeben könne. Obwohl sie über die Integration beider nachgedacht haben, weist HHVM viele Einschränkungen bei der Verwendung auf. Obwohl HHVM für Facebook und viele Entwickler ein sehr gutes Tool ist, ist der Einsatzbereich von HHVM für PHP-Projekte nicht breit genug und kann nur die Anforderungen bestimmter Projekte wie Facebook oder Wikipedia erfüllen.

In PHP, das keine stark typisierte Sprache ist, ist es noch schwieriger, JIT zu importieren.

Das Hinzufügen der JIT-Kompilierung zu PHP ist jedoch sehr schwierig. Rasmus Lerdorf sagte, dass JIT lernen muss, die Betriebsmuster (Patterns) des Programms zu identifizieren, z. B. zu verstehen, welche Teile wichtige Programmcodes sind, und vorherzusagen, wann das Programm aufgerufen wird oder welche Teile des Programms aufgerufen werden, bevor das Programm aufgerufen wird laufen.

Rasmus Lerdorf sagte, dass JIT bei vielen Autos vorhersagen können muss, welcher Teil des Autos nach rechts abbiegt, welcher Teil des Autos nach links abbiegt oder welche Autos bestimmter Farben geradeaus fahren JIT muss sie alle vorhersagen.“ Richtig, sonst wird die Leistung stark reduziert. „Wenn die Vorhersage jedoch korrekt ist, wird die Programmausführungsleistung erheblich verbessert.“

Es ist nicht einfach, JIT zur Kompilierung allgemeiner Programmiersprachen hinzuzufügen. Rasmus Lerdorf sagte, dass es aufgrund der dynamischen Natur von PHP noch schwieriger sei. Er sagte beispielsweise, dass der Entwickler den Wert des Parameters $a als 1 deklariert habe, dies bedeute jedoch nicht, dass der Wert aller $a im Programm 1 sei, da der Parameterwert in PHP leicht neu definiert werden könne. Wenn der Entwickler in der C-Sprache den Parameter a als Ganzzahl deklariert, ist a immer eine Ganzzahl. Wenn irgendwo im Programm deklariert wird, dass a ein anderer Typ als eine Ganzzahl ist, ist nicht einmal eine Kompilierung möglich. Und weil die C-Sprache eine stark typisierte Programmiersprache ist, „kann JIT vorhersagen, dass die Variable a eine Ganzzahl ist, aber in PHP haben wir diesen Luxus nicht.“ Er erklärte, dass der Ansatz von HHVM darin besteht, dass JIT lernt, dass a eine Ganzzahl ist Typ Danach wird davon ausgegangen, dass a immer eine ganze Zahl ist.

Um die JIT-Kompilierung nutzen zu können, hat HHVM die Entwicklung von PHP in gewissem Maße eingeschränkt. Benutzer von HHVM müssen die Art der Variablen klar deklarieren. Entwickler, die PHP verwenden, können jedoch zunächst eine Kategorie (Klasse) ohne Natur deklarieren und dann die Variablenattribute der Klasse angeben. „Ohne Einschränkungen müssen wir JIT zu PHP hinzufügen.“ Er sagte, PHP müsse die Entwickler von WordPress, Drupal und anderen Frameworks berücksichtigen und könne die Unterstützung dieser Frameworks nicht willkürlich einstellen. Daher unterliegt PHP im Vergleich zu HHVM stärkeren Einschränkungen beim Erstellen von JIT.

Das bedeutet jedoch nicht, dass wir kein JIT machen können. Darüber hinaus müssen wir auch die Entwicklungsrichtung von PHP kontrollieren.“

Derzeit entwickelt Dmitry Stogov, einer der Hauptmitwirkenden an PHP, einen JIT-Prototyp und verwendet einige experimentelle Anwendungen, um den Betrieb zu testen. Rasmus Lerdorf sagte, dass die Leistung von PHP 7 zehnmal schneller gemacht werden kann, wenn dieses JIT zur Ausführung bestimmter sich wiederholender Operationen oder Schleifenprogramme verwendet wird.

Allerdings gab er auch zu, dass dieser experimentelle JIT bei der Verwendung in WordPress keinen Beschleunigungseffekt erzielte: „Der JIT, den wir erstellen wollen, ist nichts, was wir in Lehrbüchern lernen, sondern etwas, das verwendet werden kann.“ in JIT arbeiten in der realen Welt“, sagte er. Weil PHP schon immer solche Ideale vertrat und versuchte, Probleme im Leben der Menschen zu lösen und in realen Online-Umgebungen zu funktionieren, und nicht nur in Theorien aus Lehrbüchern.

Rasmus Lerdorf sagte, als PHP zum ersten Mal herauskam, habe er mindestens 16 Stunden am Tag damit verbracht, PHP zu entwickeln. Doch nun hat er seine Investitionen in die Entwicklung schrittweise reduziert und seine Energie stattdessen der Öffentlichkeitsarbeit und Reden auf der ganzen Welt gewidmet. Er sagte scherzhaft: „Anstatt es selbst zu entwickeln, ist es besser, Leute zu inspirieren, die viel schlauer sind als ich und bereit sind, achtzehn Stunden am Tag damit zu verbringen, Programme für die Entwicklung von PHP zu schreiben.“ Er sagte, dass sein ultimatives Ziel darin besteht, dass es kein PHP gibt eine einzelne Zeile in PHP, die von ihm geschrieben wurde: „Jedes wachsende Projekt sollte nicht von einem Entwickler geleitet werden. Alter Programmcode sollte durch neuen Programmcode ersetzt werden.“

Empfohlenes Tutorial: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonDer Schlüssel zur Verdoppelung der PHP7-Leistung enthüllt. 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

In Verbindung stehende Artikel

Mehr sehen