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にはかなわないのは致し方ない