v8エンジンとブラウザ周りの関係
そもそもv8エンジンはJavaScriptのエンジンらしいが、
ブラウザとその辺りの関係性がよくわかってないのでまとめてみた。
v8エンジンとブラウザ周りの関係
- ブラウザの構成要素は、主にHTMLレンダリングエンジンとJavaScriptエンジンでできている。
- v8エンジンはChromeで使われているJavaScriptエンジン
- node.jsは、v8エンジンを使っている
- v8エンジンは劇速
なぜv8エンジンは劇速?
wikiあった
Google_V8_JavaScript_Engine
Firefoxはインタープリタで実行して、統計情報をとって[3]、まず中間コードに変換し、その上でJITコンパイルするが、V8では、中間コードもなく、インタープリタも搭載せずに最初の実行時からコンパイルする
あと、その他見つけたもの。
ここがよくまとまっていた。
Google Chrome に搭載されたオープンソースの JavaScript エンジン "v8" を試す
ざっくりと以下の様だ。
・オブジェクトのプロパティへのアクセスが高速
通常、ハッシュ表や二分木といった辞書による実装
→辞書を開いてめくって探す手間がかかる
v8エンジンは、メモリ内に「hidden class」というものを保持し、オブジェクトのアクセスはメモリのオフセットで行う
・動的なマシンコード生成
中間コードは作らない。
インタプリタでもない。
・効率的なガベージコレクション
プログラムが停止しないよう、一部のガベージコレクションを効率的に、
また速度を気にしながらもメモリ効率などを気にして行う。