私は通訳者/コンパイラを研究してきましたが、その後、JITコンパイル、特にGoogle ChromeのV8 Javascript Engineに出会いました。
私の質問は-
- どのように標準の解釈よりも速くできますか?
- そもそもJITコンパイルが使用されなかったのはなぜですか?
私の現在の理解
すべてのJavascriptプログラムはソースコードとして開始され、実行方法に関係なく、最終的にはマシンコードに変換されます。 JIT-CompilationとInterpretationは
両方ともこのパスに従う必要があります。どのようにJIT-Compilationを高速化することができますか(また、AOT-Compilationとは異なり、JITは時間制約があるため)。JIT-Compilationは、ウィキペディアのJIT-Compilation Articleに基づいた比較的古いイノベーションのようです。
「最初に公開されたJITコンパイラは、一般的に1960年に McCarthyによってLISPで動作するとされています。」
「Smalltalkの(C。1983)たとえば、マシンコードへの変換は、オンデマンドで行われた。JITコンパイルの新たな側面を開拓し、その結果は後で使用するためにキャッシュされた。メモリが不足になった場合、システムはこのコードと再生成の一部を削除しますそれが再び必要になったとき。」
では、なぜJavascript が最初から解釈されたのですか?
私は非常に混乱しており、これについて多くの研究を行ってきましたが、満足のいく答えは見つかりませんでした。
とても明確で簡潔な回答をいただければ幸いです。また、通訳者、JITコンパイラなどについての追加説明が必要な場合は、それも歓迎します。