SigScheme開発録 (53)

本日も8時寝2時起きで真夜中Hack。しかし明日はフランス語の試験なので、良い所で切り上げる。半分ぐらいはシケプリ目を通したけど、右から左へ抜けていっている気がする。

  • SCM_OBJ_COMPACT
    • Yamakenさんが gc 周りを整理してくれはったのでそれに追従。ここはコア部分なので絶対にミス出来ないと自分に言い聞かせながらやってたんだけど、ミスしてしまった。すません...。
    • スタック上に S->car or S->cdr が NULL のオブジェクトが有る時がある。何か見落としてはいないか。
    • sweep_obj 時点で型情報が無い。何の為に S->cdr の GC bit が有るんだと自分に言い聞かせたい。はぅ。
      • 実装完了。
  • 実行時間測定 (time ./sscm bench/bench-fib.scm)
    • 以下のような結果になった。思ったより速度低下が無い感じ。
ビルドオプション 実行時間
SCM_DEBUG = 0, SCM_OBJ_COMPACT = 0 2.49s user 0.01s system 99% cpu 2.513 total
SCM_DEBUG = 0, SCM_OBJ_COMPACT = 1 3.05s user 0.00s system 99% cpu 3.059 total
  • メモリプロファイリング
    • 前にoxy君に教えてもらった方法で、valgrind 付属の massif を使ってメモリ使用量をグラフ化してみた。
    • libtool --mode=execute valgrind --tool=massif ./sscm bench/bench-let-loop.scm

当然ながら半分になっている。こっちは速度が2倍近く遅くなっているな。パフォーマンスチューニングが必要だ。