Gauche:VMの最適化:For 0.8.6

Gauche:VMの最適化:For 0.8.6

0.8.6に入った最適化

Stack overflow handlerの改善

(2005/07/06 18:32:11 PDT)

スタックオーバフローハンドラが遅いのが気になりだしたので改善。

ack(3,9) うちstack overflow handler
0.8.5 18.05s 16.14s
変更後 4.8s 2.82s

再帰しまくるようなコードでの性能低下が抑えられるだろう。

特別な方法を使ったわけじゃなくて、単に前の方法がダメダメだっただけです。 ダメなのはわかってたんですが、普段使うアプリで滅多にスタックオーバフローが 起こらないので放置してました。

具体的に言うと、時間がかかってたのはフレームのコピーではなく、コピーされた フレームを指しているポインタを捜し出してアップデートする部分だったのですね。 変更後は普通のcopying GCと同様に2パスで、最初にフレームをコピーして元のフレームを forwarded pointerに置き換え、次にスタックを指す可能性のあるポインタを調べて forwarded pointerを指していたら書き換える、というふうにしてます。

More ...