Heim > Backend-Entwicklung > PHP8 > Hauptteil

JIT von PHP 8 verstehen

coldplay.xixi
Freigeben: 2023-02-17 11:36:01
nach vorne
3871 Leute haben es durchsucht

JIT von PHP 8 verstehen

【Verwandte Empfehlung: JIT von PHP 8 verstehen8

JIT von PHP 8 verstehen

TL;DR

Der JIT-Compiler (Just In Time) von JIT von PHP 8 verstehen 8 wird als Erweiterung in JIT von PHP 8 verstehen integriert. Die Opcache-Erweiterung wird zum Kompilieren bestimmter Dateien verwendet Zur Laufzeit werden Opcodes direkt in Anweisungen von der CPU übersetzt.

Das bedeutet, dass Zend VM nach der Verwendung von JIT bestimmte Opcodes nicht interpretieren muss und diese Anweisungen direkt als Anweisungen auf CPU-Ebene ausgeführt werden.

JIT von JIT von PHP 8 verstehen 8

Die Auswirkungen des JIT von PHP 8 verstehen 8 Just In Time (JIT)-Compilers sind unbestreitbar. Bisher habe ich jedoch festgestellt, dass sehr wenig darüber bekannt ist, was JIT tun soll.

Nach langem Recherchieren und Aufgeben habe ich beschlossen, den JIT von PHP 8 verstehen-Quellcode selbst zu überprüfen. Ich kombiniere einige meiner Kenntnisse der C-Sprache und alle verstreuten Informationen, die ich bisher gesammelt habe, und komme zu diesem Artikel, der Ihnen hoffentlich dabei helfen wird, JIT von PHP 8 verstehens JIT besser zu verstehen.

Um es einfach auszudrücken: Wenn das JIT wie erwartet funktioniert, wird Ihr Code nicht über die Zend-VM ausgeführt, sondern direkt als Satz von Anweisungen auf CPU-Ebene.

Das ist die ganze Idee.

Aber um es besser zu verstehen, müssen wir uns überlegen, wie JIT von PHP 8 verstehen intern funktioniert. Nicht sehr kompliziert, bedarf aber einer Einführung.

Ich habe einen Blogbeitrag geschrieben, der einen groben Überblick über die Funktionsweise von JIT von PHP 8 verstehen gibt. Wenn Sie der Meinung sind, dass dieser Beitrag zu viel ist, schauen Sie sich einfach einen anderen an und kommen Sie später noch einmal vorbei. Die Dinge werden verständlicher.

Wie wird JIT von PHP 8 verstehen-Code ausgeführt?

Wie wir alle wissen, ist JIT von PHP 8 verstehen eine interpretierte Sprache, aber was bedeutet dieser Satz selbst?

Jedes Mal, wenn Sie JIT von PHP 8 verstehen-Code (Befehlszeilenskript oder WEB-Anwendung) ausführen, muss dieser den JIT von PHP 8 verstehen-Interpreter durchlaufen. Am häufigsten werden die JIT von PHP 8 verstehen-FPM- und CLI-Interpreter verwendet.

Die Aufgabe des Interpreters ist einfach: JIT von PHP 8 verstehen-Code empfangen, interpretieren und das Ergebnis zurückgeben.

Allgemein interpretierte Sprachen folgen diesem Prozess. Bei einigen Sprachen entfallen möglicherweise einige Schritte, die Grundidee ist jedoch dieselbe. In JIT von PHP 8 verstehen ist der Prozess wie folgt:

  1. liest den JIT von PHP 8 verstehen-Code und interpretiert ihn als eine Reihe von Schlüsselwörtern, sogenannte Tokens. Durch diesen Vorgang weiß der Interpreter, welcher Code in jedem Programm geschrieben wurde. Dieser Schritt wird Lexing oder Tokenisieren genannt.

  2. Nachdem der JIT von PHP 8 verstehen-Interpreter die Token-Sammlung erhalten hat, versucht er, sie zu analysieren. Ein abstrakter Syntaxbaum (AST) wird durch einen Prozess namens „Parsing“ generiert. Hier ist AST eine Reihe von Knoten, die darstellen, welche Operationen ausgeführt werden sollen. Beispielsweise bedeutet „echo 1 + 1“ tatsächlich „das Ergebnis von 1 + 1 drucken“ oder genauer gesagt „eine Operation drucken, diese Operation ist 1 + 1“.

  3. Mit AST ist es einfacher, Abläufe und Prioritäten zu verstehen. Um einen abstrakten Syntaxbaum in eine von der CPU ausführbare Operation umzuwandeln, ist ein Übergangsausdruck (IR) erforderlich, den wir in JIT von PHP 8 verstehen Opcodes nennen. Der Prozess der Konvertierung von ASTs in Opcodes wird „Kompilierung“ genannt.
  4. Mit Opcodes kommt jetzt der spaßige Teil:

    Ausführen
  5. des Codes! JIT von PHP 8 verstehen verfügt über eine Engine namens Zend VM, die eine Reihe von Opcodes empfangen und ausführen kann. Nachdem alle Opcodes ausgeführt wurden, beendet Zend VM das Programm.
  6. Dieses Bild kann es für Sie klarer machen:

Eine vereinfachte Version der Übersicht über den JIT von PHP 8 verstehen-Interpretationsprozess.

JIT von PHP 8 verstehen 的解释流程.Wie Sie sehen können. Hier ist eine Frage: Auch wenn sich der JIT von PHP 8 verstehen-Code nicht geändert hat, wird dieser Prozess bei jeder Ausführung befolgt?

Lassen Sie uns einen Blick zurück auf Opcodes werfen. Das ist richtig! Aus diesem Grund gibt es die

Opcache-Erweiterung

.

Opcache-ErweiterungDie Opcache-Erweiterung wird mit JIT von PHP 8 verstehen geliefert und es besteht normalerweise keine Notwendigkeit, sie zu deaktivieren. Wenn Sie JIT von PHP 8 verstehen verwenden, ist es am besten, Opcache zu aktivieren.

Was es bewirkt, ist das Hinzufügen einer Speicher-Shared-Cache-Ebene zu Opcodes. Seine Aufgabe besteht darin, neu generierte Opcodes aus dem AST zu extrahieren und zwischenzuspeichern, sodass die Schritte Lexing/Tokenisierung und Parsing während der Ausführung übersprungen werden können.

Dies ist ein Prozessdiagramm, das die Opcache-Erweiterung enthält:

Erklärungsprozess für JIT von PHP 8 verstehen mit Opcache. Wenn die Datei bereits analysiert wurde, ruft JIT von PHP 8 verstehen zwischengespeicherte Opcodes dafür ab, anstatt sie erneut zu analysieren.

使用 Opcache 的 JIT von PHP 8 verstehen 解释流程Die Schritte Lexing/Tokenisieren, Parsen und Kompilieren werden perfekt übersprungen

Verwandte Lernempfehlungen:

JIT von PHP 8 verstehen-Programmierung

(Video)

Das obige ist der detaillierte Inhalt vonJIT von PHP 8 verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
jit
Quelle:learnku.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage