インライン展開再び - Scheme VM を書く

いいかげんではあるがインライン展開をしたところ速度が劇的に向上することが分かった。理論的には分かっていたけど本当に速くなるとうれしい。
真面目にインライン展開をするには以下の4つの作業が必要そうだ。

  • 展開すると動かないという例をつぶす。
  • 展開するとそのままでは A正規形が維持できないのをどうにかする。
  • 展開の閾値を決める。
  • 再帰手続きの場合に無限に展開しないようにする。 => OK

やっていきましょう。

閾値の決定とかは

(for i in `seq 0 100`; do ./optimize.scm compiler.scm $i > optcompiler.scm ;\
 (time ./stack-vm40.scm optcompiler.scm compile wiki/wiki-parser6.scm) 2>&1 |\
 grep cpu | cut -d' ' -f12; echo $i; done) | tee hoge.log	

とパフォーマンスを見ながらやる。