JIT
JIT(Just In Time)
プログラムを実行する前に、その機器で実行できる形式に変換(コンパイル)する仕組み
バイトコードをCPUのネイティブコードにコンパイルして実行する形式
x86
中間言語(IR)やソース言語で書かれたプログラムを、コンピュータが全て変換
ソース言語(人間が読み書きできる状態のプログラム言語)
逐次実行では不可能だったアプリケーションの高速実行が可能
JITコンパイラ
実行時コンパイラ
code:図.mermaid
%%{init:{'theme':'neutral'}}%%
flowchart LR
Aソース言語--->|コンパイラ|B"中間表現(IR)<br/><br/>(バイトコード)"--->|"JITコンパイラ(VM)"|C"ネイティブコード(機械語)"
JITの利点
アーキテクチャ(OSやCPU等)への非依存
実行時にコンパイルすることで、オペレーティングシステムやCPUに依存しないソースコードや中間コードの状態でソフトウェアを配布することができる
端末のアーキテクチャー(規格)に依存しない、中間言語形式のプログラムを利用できる
スピード
バイナリ > JIT > インタプリタ
JITの欠点
逐次実行の場合に比べてメモリが多く必要になる
RubyのJIT
Ruby 3.1のYJIT
JITのコード例
https://twitter.com/mod_poppo/status/1443407499026046977?s=21
確認用
Q. JIT
Q. JITの利点
Q. JITの欠点
参考
第468回:JITコンパイラとは - ケータイ Watch Watch
JITコンパイラ|大塚商会
実行時コンパイラ - Wikipedia
関連
Java
JavaVM
Hotspot
GraalVM
Xbyak
LLVM
WebKit
HHVM
PyPy
JITコンパイラ
AOTコンパイラ
メモ
JITの歴史
John Aycock. 2003. A Brief History of Just-In-Time. ACM Comput. Surv. 35, 2 (June 2003), 97–113. https://doi.org/10.1145/857076.857077
https://www.cs.tufts.edu/comp/150IPL/papers/aycock03jit.pdf
#仮想マシン(VM)