Toy VM(13) - 悪あがき

以下は早すぎる最適化というやっちゃいけないことの典型。ホンモノのVM, YARV とか gauche とかの融合命令という言葉を使ってみたかっただけ。

いくらなんでも、gauche より30倍遅いのは問題だ。fib 39 で5分かかる。gauche は10秒だ。

ここで命令を増やして見よう。複数の vm 命令を融合してやるんだ。SECD マシンはマクロで書けているのだから簡単に命令は追加できる。コンパイラの方は面倒なので、手でコンパイルでごまかす。vm 定義は2行足すだけ、:LDC と :LD と比較、減算を一緒に行う珍妙な命令 :LDC-LD-<, :LDC-LD-- を作ってやる。

‥5分が4分ちょっとになったが誤差レベル。