ブラウザで JavaScript を実行すると内部で何が起こっているのか考えたことはありますか?さて、JavaScript に命を吹き込む魔法のエンジン、V8 を紹介します。 V8 を車のエンジンと考えてください。V8 は、JavaScript をコンピュータが理解してスムーズかつ迅速に実行できるものに変換する役割を果たします。
V8 がどのように機能するかを詳しく見ていきましょう。ただし、心配しないでください。楽しく簡単に説明していきます。 ?
V8 エンジンは、Google が開発したオープンソースの JavaScript エンジンです。 Google Chrome や Node.js などの他の多くの環境を強化します。基本的に、V8 は JavaScript コードを取得し、それをマシン コードにコンパイルし、超高速に実行します。
JS を作成すると、V8 によってマシンがそれをどう処理するかを正確に認識できるようになります。
JavaScript を記述するとき、V8 は最初にコードを 解析します。コードを小さくてわかりやすいチャンク (トークンと呼ばれる) に分割し、構文ツリー (AST) を作成します。このツリーは、コードがどのように構造化されているかを示す地図のようなものです。
let a = 10; let b = 20; let sum = a b;
V8 はこのコードを見て、「なるほど、2 つの変数と合計演算があるようだ。」と考えます。
構文ツリーが構築されると、V8 は Ignition インタープリター と呼ばれるものを使用します。インタプリタはコードを迅速に処理し、そのまま実行しますが、まだ超高速ではありません。これは、コードがどのように動作するかを確認するためにテストを実行するようなものです。
Ignition は「試運転」モードのように考えてください。この時点では、あまり最適化せずにコード ジャストインタイム を実行します。
JavaScript が実行されると、V8 はそれを監視します。コードの中で頻繁に使用されている部分を監視します。これらは ホット関数 と呼ばれます。これは、レース中に車のどのギアが最もよく使われるかを調べるようなものです。
コードの一部が何度も実行されると、V8 はそれにフラグを立てて、「コードのこの部分には重大な最適化が必要になる可能性があります!」と通知します。
V8 はいくつかのホットな関数を認識すると、それらを TurboFan コンパイラー に渡します。 TurboFan はレースのピット クルーのようなものです。コードを受け取り、速度を高めるためにコードを最適化します。
これが魔法です。TurboFan は、JavaScript を マシンコード (コンピューターが理解できる 2 進数の 0 と 1) に変換します。この最適化されたマシン コードは、Ignition が最初に作成したものよりもはるかに高速です。
2 つの数値を加算する関数があり、それを頻繁に呼び出す場合、TurboFan はその関数を可能な限り高速にします。
JavaScript を実行するとき、変数、オブジェクト、配列などを作成することがよくあります。それらの作成が完了すると、V8 は ガベージ コレクション を実行します。これは、作成したものからメモリを自動的に解放するプロセスです。もう必要ありません。これにより、ブラウザまたは Node.js サーバーがメモリ不足になってクラッシュすることがなくなります。
V8 のガベージ コレクションは賢明です。ただランダムに物を捨てるだけではありません。 マーク アンド スイープ などの手法を使用して、未使用のデータを注意深く追跡し、削除します。
V8 は、ジャストインタイム (JIT) コンパイル と呼ばれる手法を使用します。つまり、(他の多くの言語と同様に) JavaScript を実行前にコンパイルするのではなく、V8 はコードの実行中にコードをコンパイルし、リアルタイムで大幅な速度向上を実現します!
V8 はメモリ管理に優れています。変数や関数に適切な量のメモリを割り当て、完了すると後はクリーンアップされます。これにより、コードが高速に実行され、システム リソースが無駄にならないようになります。
V8 は最新の JavaScript 機能に対応しています。 ES6 クラス、async/await、またはオプションのチェーン (?.) などの新しい構文を使用しているかどうかに関係なく、V8 がサポートし、すべてを効率的にサポートします。
数値の階乗を計算する関数を書いたとします:
function factorial(n) { if (n === 0) { return 1; } return n * factorial(n - 1); } console.log(factorial(5)); // Output: 120
V8 の内部で何が起こっているかは次のとおりです:
JavaScript が成長するにつれて、V8 も成長します。 Google のチームは、パフォーマンス、メモリ効率、新しい JavaScript 機能のサポートに重点を置いてエンジンを継続的に改善しています。
したがって、Chrome または Node.js で JavaScript を実行するたびに、V8 が舞台裏で懸命に動作し、コードを解釈、最適化、管理し、アプリケーションが高速かつ効率的に実行されるようにしていることを知ってください。
V8 の知識をテストするための簡単なクイズです:
これが V8 の簡素化です。 Web 上でも Node.js のサーバーサイドでも、この強力なエンジンが JavaScript をどのように強化するかについて、よりよく理解していただけたと思います。コーディングを楽しんでください! ?
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3