合成命令調子悪し - Scheme VM を書く
以下の2つの合成命令化が返ってパフォーマンスを悪くすることが分かった。
- LEAVE 1 => LEAVE1
- APPLY 1 => APPLY1
APPLY に関して
APPLY はコードが長いので影響を与えているかもしれない。
- APPLY 1 は APPLY のコピペで済ませる
- APPLY の処理を関数化して APPLY1 と APPLY の両方から呼ぶ
ではどちらもパフォーマンスが悪くなるが前者の方がより悪い。
つまりコードサイズが問題か?それともコードの重複だろうか?
合成命令多すぎ?
現在合成命令は 15個。
例の論文では32個、64個だったのでそのあたりまでは行けると思うのだけども。
追記
APPLY 1 は APPLY のコードの途中に goto するようにしたら速くなりました。
LEAVE 1も同様の手法を試したところ遅くならなくなりました。
コードサイズが問題?