Bedeutung von in JavaScript interpretiert oder kompiliert

click fraud protection

Computer können den Code, in den Sie schreiben, nicht ausführen JavaScript (oder eine andere Sprache für diese Angelegenheit). Computer können nur Maschinencode ausführen. Der Maschinencode, den ein bestimmter Computer ausführen kann, wird innerhalb des Prozessors definiert, der diese Befehle ausführen wird, und kann für verschiedene Prozessoren unterschiedlich sein.

Offensichtlich, Maschinencode schreiben war schwierig für die Leute zu tun (ist 125 ein Befehl zum Hinzufügen oder ist es 126 oder vielleicht 27). Um dieses Problem zu umgehen, wurden sogenannte Assemblersprachen erstellt. Diese Sprachen verwendeten offensichtlichere Namen für die Befehle (z. B. ADD zum Hinzufügen) und machten es daher überflüssig, sich die genauen Maschinencodes zu merken. Assemblersprachen haben immer noch eine Eins-zu-Eins-Beziehung zu dem bestimmten Prozessor- und Maschinencode, in den der Computer diese Befehle konvertiert.

Assemblersprachen müssen kompiliert oder interpretiert werden

Sehr früh wurde erkannt, dass das Schreiben einfacher ist

instagram viewer
Sprachen benötigt wurden und dass der Computer selbst verwendet werden konnte, um diese in die Maschinencode-Anweisungen zu übersetzen, die der Computer tatsächlich verstehen kann. Mit dieser Übersetzung konnten zwei Ansätze verfolgt werden, und beide Alternativen wurden ausgewählt (Je nach verwendeter Sprache und Ausführungsort wird entweder die eine oder die andere verwendet).

Eine kompilierte Sprache ist eine Sprache, in der Sie nach dem Schreiben des Programms den Code über ein Programm namens a eingeben Compiler und das erzeugt eine Maschinencodeversion des Programms. Wenn Sie das Programm dann ausführen möchten, rufen Sie einfach die Maschinencodeversion auf. Wenn Sie Änderungen am Programm vornehmen, müssen Sie es neu kompilieren, bevor Sie den geänderten Code testen können.

Eine interpretierte Sprache ist eine Sprache, in der die Anweisungen von dem, was Sie während der Ausführung des Programms geschrieben haben, in Maschinencode konvertiert werden. Eine interpretierte Sprache erhält grundsätzlich eine Anweisung von der Programmquelle und konvertiert sie in eine Maschine Code, führt diesen Maschinencode aus und holt sich dann die nächste Anweisung von der Quelle, um den zu wiederholen Prozess.

Zwei Varianten zum Kompilieren und Interpretieren

Eine Variante verwendet einen zweistufigen Prozess. Bei dieser Variante wird die Quelle Ihres Programms nicht direkt in den Maschinencode kompiliert, sondern Stattdessen wird in eine Assembler-ähnliche Sprache konvertiert, die immer noch unabhängig von der jeweiligen Sprache ist Prozessor. Wenn Sie den Code ausführen möchten, verarbeitet er diesen kompilierten Code über einen prozessorspezifischen Interpreter, um den für diesen Prozessor geeigneten Maschinencode zu erhalten. Dieser Ansatz bietet viele Vorteile des Kompilierens unter Wahrung der Prozessorunabhängigkeit, da der gleiche kompilierte Code von vielen verschiedenen Prozessoren interpretiert werden kann. Java ist eine Sprache, die diese Variante häufig verwendet.

Die andere Variante wird als Just-in-Time-Compiler (oder JIT) bezeichnet. Mit diesem Ansatz führen Sie den Compiler nicht aus, nachdem Sie Ihren Code geschrieben haben. Dies geschieht stattdessen automatisch, wenn Sie den Code ausführen. Mit einem Just-in-Time-Compiler wird der Code nicht Anweisung für Anweisung interpretiert, sondern in einem kompiliert Gehen Sie jedes Mal, wenn es zum Ausführen aufgerufen wird, und dann wird die kompilierte Version, die es gerade erstellt hat, abgerufen Lauf. Dieser Ansatz lässt es sehr ähnlich aussehen, als würde der Code interpretiert, außer dass anstelle von Fehlern nur gefunden wird, wenn die Anweisung mit dem Wenn ein Fehler erreicht wird, führen alle vom Compiler erkannten Fehler dazu, dass bis zu diesem Zeitpunkt kein Code anstelle des gesamten Codes ausgeführt wird Lauf. PHP ist ein Beispiel für eine Sprache, die normalerweise nur zur Zeitkompilierung verwendet wird.

Wird JavaScript kompiliert oder interpretiert?

Jetzt wissen wir also, was interpretierter Code und kompilierter Code bedeuten. Die Frage, die wir als nächstes beantworten müssen, ist, was all dies mit JavaScript zu tun hat. Je nachdem, wo genau Sie Ihr JavaScript ausführen, kann der Code kompiliert oder interpretiert werden oder eine der beiden anderen genannten Varianten verwenden. Meistens bist du esAusführen Ihres JavaScript in einem Webbrowser und dort wird das JavaScript normalerweise interpretiert.

Interpretierte Sprachen sind normalerweise langsamer als kompilierte Sprachen. Dafür gibt es zwei Gründe. Erstens muss der zu interpretierende Code tatsächlich interpretiert werden, bevor er ausgeführt werden kann, und zweitens Dies muss jedes Mal geschehen, wenn die Anweisung ausgeführt werden soll (nicht nur jedes Mal, wenn Sie JavaScript ausführen, sondern auch, wenn es in ist ein Schleife dann muss es jedes Mal um die Schleife herum gemacht werden). Dies bedeutet, dass in JavaScript geschriebener Code langsamer ausgeführt wird als in vielen anderen Sprachen geschriebener Code.

Wie hilft es uns, wenn wir wissen, dass JavaScript die einzige Sprache ist, die für alle Webbrowser verfügbar ist? Der im Webbrowser integrierte JavaScript-Interpreter selbst ist nicht in JavaScript geschrieben. Stattdessen ist es in einer anderen Sprache geschrieben, die dann kompiliert wurde. Dies bedeutet, dass Sie Ihr JavaScript schneller ausführen können, wenn Sie alle von JavaScript bereitgestellten Befehle nutzen können, mit denen Sie die Aufgabe in die JavaScript-Engine selbst auslagern können.

Beispiele für eine schnellere Ausführung von JavaScript

Ein Beispiel hierfür ist, dass einige, aber nicht alle Browser eine document.getElementsByClassName () -Methode in der JavaScript-Engine implementiert haben, während andere dies noch nicht getan haben. Wenn wir diese spezielle Funktionalität benötigen, können wir feststellen, dass Code in den Browsern, in denen die JavaScript-Engine ihn bereitstellt, mithilfe der Funktion schneller ausgeführt wird Erkennen, ob die Methode bereits vorhanden ist, und Erstellen einer eigenen Version dieses Codes in JavaScript nur, wenn die JavaScript-Engine dies nicht bereitstellt uns. Wenn die JavaScript-Engine diese Funktionalität bietet, sollte sie schneller ausgeführt werden, wenn wir diese verwenden, anstatt unsere eigene in JavaScript geschriebene Version auszuführen. Gleiches gilt für jede Verarbeitung, die uns die JavaScript-Engine zum direkten Aufruf zur Verfügung stellt.

Es wird auch Fälle geben, in denen JavaScript mehrere Möglichkeiten bietet, dieselbe Anfrage zu stellen. In diesen Fällen kann eine der Möglichkeiten für den Zugriff auf die Informationen spezifischer sein als die andere. Zum Beispiel document.getElementsByTagName ('table') [0] .tBodies und document.getElementsByTagName ('table') [0] .getElementsByTagName ('tbody') beide Rufen Sie dieselbe Knotenliste der tbody-Tags in der ersten Tabelle auf der Webseite ab. Die erste davon ist jedoch ein spezifischer Befehl zum Abrufen Die tbody-Tags, bei denen der zweite angibt, dass wir tbody-Tags in einem Parameter abrufen, und andere Werte können ersetzt werden, um andere abzurufen Stichworte. In den meisten Browsern wird die kürzere und spezifischere Variante des Codes schneller ausgeführt (in einigen Fällen) viel schneller) als die zweite Variante und daher ist es sinnvoll, die kürzere und spezifischere zu verwenden Ausführung. Es erleichtert auch das Lesen und Verwalten des Codes.

In vielen dieser Fälle ist der tatsächliche Unterschied in der Verarbeitungszeit sehr gering und nur dann Sie fügen viele solcher Code-Optionen zusammen, sodass Sie einen merklichen Unterschied in der Zeit feststellen, die Ihr Code benötigt Lauf. Es ist jedoch ziemlich selten, dass eine Änderung Ihres Codes, um ihn schneller auszuführen, die Wartung des Codes erheblich verlängert oder erschwert, und häufig ist das Gegenteil der Fall. Es gibt auch den zusätzlichen Vorteil, dass zukünftige Versionen von JavaScript-Engines erstellt werden können, die die spezifischere Variante sogar beschleunigen Darüber hinaus kann die Verwendung der spezifischen Variante dazu führen, dass Ihr Code in Zukunft schneller ausgeführt wird, ohne dass Sie etwas ändern müssen.

instagram story viewer