【じっとこんぱいる】

JITコンパイル とは?

💡 走りながらコードを最適化する、現代の"即席職人"。
📌 このページのポイント
JITコンパイル(Just-In-Time) ソースコード bytecode インタープリタ 実行+監視 JITコンパイラ ホットスポット最適化 ネイティブコード 高速実行 🔥 ホットスポット検出 キャッシュ 実行回数が多いコードをネイティブコードに変換してキャッシュ
JITコンパイルのしくみ:ホットスポットを検出してネイティブコードに最適化
ひよこ ひよこ

JITコンパイルって、普通のコンパイルと何が違うの?

ペンギン先生 ペンギン先生

普通のコンパイルプログラムを実行する前に全部変換しておくんだけど、JITは実行しながら「今必要なところだけ」をネイティブコードに変換するんだよ。

ひよこ ひよこ

走りながら準備するみたいな感じなんだね!でも遅くなりそう…

ペンギン先生 ペンギン先生

最初はちょっと遅いんだよ。でも「このコードは何度も使われてる!」と判断したら、その部分を特別に最適化してコンパイルするから、しばらくすると超速くなるんだ。

ひよこ ひよこ

どんなところで使われてるの?

ペンギン先生 ペンギン先生

JavaのHotSpot JVMやJavaScriptのV8エンジン(ChromeやNode.jsで使われてる)が有名だよ。特によく使う関数を検出して、ネイティブコードに置き換えていくんだ。

ひよこ ひよこ

AOTコンパイルとはどう違うの?

ペンギン先生 ペンギン先生

AOTは事前に全部コンパイルするから起動は速いけど、実行時の情報を使って最適化できないんだよ。JITは「このデータは整数ばかりだ」みたいな実行中の情報を活かして、より深く最適化できるんだね。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「JITコンパイル」って出てきたら「実行しながらコードをその場でネイティブ化する仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Just-In-Time Compilation」 = ちょうど間に合うコンパイル
💬 製造業の「必要な時に必要な分だけ生産するJIT方式」から名付けられたんだよ。コードも「必要な時に必要な分だけ」コンパイルするイメージだね。
← 用語集にもどる