v 8原理——v 8の中のクローズド

999 ワード

V8   JavaScript   ,             ,         V8   JavaScript                     ,                 ,    CPU               。
JavaScriptコードをコンパイルする過程で、V 8はすべてのJavaScriptを中間コードとして一度に解析しません.これは主に以下の2点に基づいています.
  • まず、JavaScriptコードのすべてを解析しコンパイルすると、多すぎるコードがコンパイル時間を増加させます.これはJavaScriptコードを実行する最初の速度に深刻な影響を与えます.
  • の次に、解析が完了したバイトコードとコンパイルしたマシンコードがメモリに保存されます.JavaScriptコードのすべてを一度に解析しコンパイルすると、これらの中間コードとマシンコードはずっとメモリを占有します.
  • 以上の原因に基づいて、すべての主流のJavaScript仮想マシンが不活性解析を実現しました.不活性解析とは、解析中に関数宣言が発生すると、関数内部のコードをスキップしてASTとバイトコードを生成せず、トップコードのASTとバイトコードのみを生成することを意味する.
    クローズドの3つの特性:
  • JavaScript言語は、関数の内部に新しい関数を定義することを可能にする.
  • は、親関数で定義された変数に内部関数でアクセスすることができる.
  • 関数は一等公民ですので、関数は戻り値として利用できます.
  • v 8のプリコンサV 8は、プリコンサを導入し、トップコードを解析するとき、関数に会った場合、プリコンサは直接にこの関数をスキップするのではなく、この関数に対して高速な事前解析を行う.その主な目的は2つある.
  • は、現在の関数に文法的なエラーがあるかどうかを判断することである.
  • は、関数の内部に外部変数が参照されているかどうかを確認するためのもので、外部変数を参照すると、プレソクタはスタックの中の変数をスタックにコピーし、次の関数を実行するときに、その山の中の参照を直接使用して、このようにクローズドによる問題を解決します.