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を指していたら書き換える、というふうにしてます。