やったこと
- 疎な配列をエミュレートしていたのだけれど、それに付随していたイテレータの削除
- 10%程度
- 地味にコードのリファクタリング
- 10%程度
- インストラクションコードの2番目がアトムチェックのコードならマッチする場所までチェックする
- これが効いた、900%
現状ではものすごく手抜きな先読みなので、#/(\d\d):\d\d:\d\d/と変更されるだけで遅くなるんだけど。また気になったら直すことにしよう。
さすがにグルーピングしただけでパフォーマンスが落ちるのはあんまりなので直した。あと(aa|bb)形式もいけるようにした。
とりあえずのところは満足ということにしよう。
追記。ベンチマークの結果をつけるの忘れてた。
以下は前回と同じ環境での結果(上が改善後)
$ ./build/sash.exe reg.scm ;; (dotimes (i count) (thunk)) ;; 0.328125 real 0.375000 user 0.000000 sys #t $ sash reg.scm ;; (dotimes (i count) (thunk)) ;; 2.921875 real 2.985000 user 0.000000 sys #tほぼ10倍?このパターンがどれほど実際のプログラムで出てくるかは分からないけど・・・
No comments:
Post a Comment