【じっとこんぱいら】
JITコンパイラ とは?
最終更新:
💡 実行しながら、必要なコードをその場でコンパイル
プログラムの実行時に、バイトコードなどをCPUが実行する機械語へ変換するコンパイラ。必要になった部分の変換や、実行中の情報を使った最適化を行う方式がある。
📌 このページのポイント
- Just-In-Time(必要になった時点)にコンパイルする
- JavaのHotSpot、JavaScriptのV8、.NETなどの実行環境で使われる
- 実行頻度や値の型などを調べ、よく使う部分を最適化する方式がある
- コンパイル時間・メモリの負担もあるため、AOTとの得失は用途や実測で判断する
JavaScriptのV8エンジンもJIT?
実行してから最適化する利点は?
たとえば、よく実行する関数や実際に渡された値の型を手がかりにできるよ。ただし、想定した型などが変わったら、最適化を取り消して別の実行方式へ戻す場合もあるんだ。
JITのデメリットは?
AOTコンパイルとの使い分けは?
起動時間、継続実行の速さ、メモリ使用量などを測って選ぼう。AOTでも、事前の試運転で集めた情報を使うPGOという最適化があるんだ。「JITは常に最高速、AOTは起動直後から最高速」とは決められないよ。
まとめ:ざっくりこれだけ覚えればOK!
「JITコンパイラ」って出てきたら「実行時に必要なコードを機械語へ変換する仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Just-In-Time Compiler」 = 実行時コンパイラ
💬 Just-In-Timeは「必要なときに」という意味。プログラムの実行時にコンパイルすることを表しているよ。