JITを動かす記事を読んで、ふとDirect Threadedでのインタプリタだとどのくらいの速度が出るのか気になった。
ので手元で計測してみた。
Type | Mandelbrot | Factor |
---|---|---|
simpleinterp | 44.079 | 14.401 |
optinterp3 | 4.850 | 2.486 |
simpledt | 38.625 | 12.221 |
optdt | 2.974 | 1.417 |
simpleasmjit | 3.626 | 1.180 |
optasmjit | 1.319 | 0.399 |
(最適化なしのインタプリタ版は遅すぎるので、グラフからは除外)
- Direct Threadedはかなり効果がある(switch文による分岐のものと比べて40%ほど速い)
- とはいえ、1命令ごとにジャンプが必要なのは変わらないから、まあJITにはかなわないのは致し方ない