HN🔥 29
💬 8
CインタプリタにJITコンパイラを後付けして爆速化させる技術
ltratt
約2か月前
C言語のインタプリタに対して、後からJIT(Just-In-Time)コンパイラを組み込み、実行速度を劇的に向上させるための手法について解説します。
自分ではコンピュータオタクだと思ってたけど、こういう記事を見ると自分なんてオタクのレベルにも達してないんだなって思い知らされるわ。
要約:ランタイムのIRトレースを有効にしたLLVMのフォークでコンパイルしろってことか。めちゃくちゃ賢いな!
Cプログラム用のインタプリタの話なのか、それとも「C」という特定の種類のインタプリタの話なのか理解するのに時間がかかったよ。結局のところ、Cで実装されたインタプリタに修正を加えたLLVMを使ってレトロフィット(後付け実装)してるって話なんだね。でもこれ、LLVM IRを使う他の言語や、Cの他のswitch-in-a-loopパターンにも応用できるんじゃないの?
ほぼ任意のCコードに対してこれを実現できるのは本当にすごいね!PyPyがやってることとすごく似てるけど、PythonのサブセットじゃなくてCでやってるわけだ。
とはいえデメリットもあるね。平均的なコードだとLuaより2倍速い程度みたいだし、LuaJITが5~10倍速いことが多いのと比べるとね。