Heim > Web-Frontend > Front-End-Fragen und Antworten > Wozu dient die Javascript-Engine?

Wozu dient die Javascript-Engine?

WBOY
Freigeben: 2022-03-10 10:51:02
Original
1857 Leute haben es durchsucht

Die JavaScript-Engine wird verwendet, um JavaScript-Code in schnell optimierten Code umzuwandeln, der vom Browser interpretiert werden kann. Die Engine ist ein Softwarekonverter, der den Code eingibt und Befehle ausgibt, die mit der Maschinenerkennung und -bedienung übereinstimmen.

Wozu dient die Javascript-Engine?

Die Betriebsumgebung dieses Tutorials: Windows 10-System, JavaScript-Version 1.8.5, Dell G3-Computer.

Wozu dient die Javascript-Engine?

Die JavaScript-Engine ist eine virtuelle Maschine, die auf die Verarbeitung von JavaScript-Skripten spezialisiert ist und im Allgemeinen in Webbrowsern enthalten ist.

Apropos Javascript-Engine: Viele Menschen sind damit sowohl vertraut als auch unbekannt. Denn obwohl ich jeden Tag viel JS-Code schreibe, bin ich mit seinen Prinzipien und Funktionsweisen nicht sehr vertraut. Dieser Fehler tritt nicht auf, wenn die Systemressourcen ausreichend sind, es können jedoch Probleme auftreten, wenn Leistungsanforderungen oder Kompatibilität auf verschiedenen Browsern bestehen. Daher ist es sehr wichtig, das Funktionsprinzip des Motors zu verstehen.

Was ist also ein Motor? Persönlich bin ich der Meinung, dass eine Engine im Computerbereich ein Softwarekonverter ist, der Ihren Code eingibt und Befehle ausgibt, die mit der Maschinenerkennung und -bedienung übereinstimmen. Nehmen Sie als Beispiel JavaScript. Die Engine ist für das Parsen des JS-Codes und das Kompilieren in Maschinensprache für verschiedene Umgebungen verantwortlich. Da es sich bei der JavaScript-Sprache jedoch um eine dynamisch interpretierte Sprache handelt, ist der Leistungsdruck der JS-Engine im Vergleich zu kompilierten Sprachen wie Java und C++ sehr hoch. Daher wird die Leistung einer der Kernindikatoren für die Messung moderner JS-Engines sein.

Die aktuellen Mainstream-JS-Engines sind die V8-Engine von Google Chrome und JavascriptCore, die beide zum Webkit-Kern gehören. Webkit wurde zuerst von Apple vorgeschlagen und zog später viele Unternehmen zur gemeinsamen Entwicklung an. Aufgrund unterschiedlicher Meinungen trennte sich Google später von Webkit und entwickelte eigene Browser der Chromium-Serie, die sich auf hohe Leistung konzentrierten. Daher werden wir in V8 die Einführung vieler Technologien zur Leistungsoptimierung erleben, während JavascriptCore immer der Standardkernel von Webkit war. Auch die Engine optimiert und iteriert langsam. Werfen wir einen Blick auf die spezifischen Gemeinsamkeiten und Unterschiede.

V8-Engine

Werfen wir zunächst einen Blick auf den gesamten Verarbeitungsablauf von V8:

Wozu dient die Javascript-Engine?

Der erste Schritt besteht darin, einen Parser zum Parsen und Generieren eines abstrakten Syntaxbaums zu verwenden und dann JIT (Just In) zu verwenden Zeit) vollständiger Codegenerator zum Generieren von lokalem Code. Der Vollcode-Generator ist hier Teil des JIT-Compilers und unterscheidet sich von den Bytecode-Zwischenergebnissen von JavaScriptCore. Dieses Design dient hauptsächlich Leistungsaspekten, löst jedoch in einigen Szenarien auch einen höheren Zeitaufwand aus.

Das Kompilierungsergebnis des vollständigen Codegenerators hängt von der Back-End-Implementierung verschiedener Plattformen ab und generiert schließlich den entsprechenden Assemblercode, wie in der folgenden Abbildung dargestellt:

Wozu dient die Javascript-Engine?

Erwähnenswert ist auch die Speicherverwaltung von V8 : Es geht um die Verwaltung von Daten-Sharding und Garbage Collection. Die Datenschicht verwendet die Zonenklasse, die kleinste Einheit der Engine-Planung. Auf die gesamte Zone wird zugegriffen und gelöscht, und derselbe Datentyp wird in der Zone gespeichert. Wenn Sie recyceln möchten, müssen Sie auch den gesamten Zonenspeicherblock recyceln. Der Vorteil besteht darin, dass eine große Anzahl ähnlicher Vorgänge, z. B. das Generieren abstrakter Syntaxbäume, effizient verarbeitet werden kann. Die verstreuten Datenstrukturen in der Zone lassen sich nur schwer mit der Zeit bereinigen. Der Speicherverbrauch steigt.

V8 verwendet außerdem die klassische Drei-Klassifizierungsmethode für die Speicherbereinigung, die in junge Generationen, alte Generationen und große Objekte unterteilt ist. Wie in der folgenden Abbildung dargestellt:

Wozu dient die Javascript-Engine?

V8 verwendet Handles zum Markieren von Objektpositionen. Der Unterschied zu Zeigern besteht darin, dass Handles im Allgemeinen ganzzahlige Bytes des Betriebssystems sind, normalerweise 4 oder 8 Bytes. Das Handle kann die entsprechende Zeigeradresse generieren oder kleine ganzzahlige Daten direkt speichern.

JavascriptCore-Engine

Als von Apple verwaltete Standard-Webkit-Engine führt JavaScriptCore viele Apple-Technologien ein, wie z. B. den LLVM- und DFG-JIT-Compiler (Data-Flow Graph). Der größte Unterschied zu V8 besteht darin, dass nach der Generierung des abstrakten Syntaxbaums nicht direkt lokaler Code generiert wird, sondern plattformübergreifender Bytecode:

Wozu dient die Javascript-Engine?

Verwenden Sie dann einen Interpreter, der der Java Virtual Machine ähnelt, um den Bytecode zu analysieren.

In Bezug auf die Speicherverwaltung sind JavaScriptCore und V8 ähnlich, mit Generationsstrategie und Zonenvariante JSGlobalData.

Zusammenfassend lässt sich sagen, dass V8 und JavaScriptCore als Vertreter von js-Engines ihre eigenen Merkmale in ihren Entwicklungsrouten haben, aber die Leistung ist ein unverzichtbarer Bestandteil von beiden, der kontinuierlich verbessert werden muss. Mit der Förderung des HTML5-Standards werden meiner Meinung nach in naher Zukunft weitere Videos, Webgl-Rendering usw. hinzugefügt.

Verwandte Empfehlungen: Javascript-Lern-Tutorial

Das obige ist der detaillierte Inhalt vonWozu dient die Javascript-Engine?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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