Let's start Scheme

2011-07-17

キャッシュが遅い

キャッシュを作って早くなったと思っていたのだが、実は遅かった。
コマンドラインオプションに--disable-cacheがあるのだが、それを使ったのと、普通にキャッシュを呼んだのとで0.3秒ほど違いがでる。単に(import (rnrs))と書いたファイルを実行するのにだ。
プロファイルを取ろうとしたらgprofがOut of Memory errorとか言いやがるので、timeコマンドの意味を調べてみた。
userが計算時間、systemがI/O、realがトータル。
これを頭に入れて再度時間を計測。

$ time ./build/sash test3.scm
./build/sash test3.scm 1.37s user 1.06s system 93% cpu 2.603 total

$ time ./build/sash --disable-cache test3.scm
./build/sash --disable-cache test3.scm 1.92s user 0.20s system 89% cpu 2.368 total

I/Oか。計算時間もそこまで差が無いように見えるなぁ。
3倍早くなった気がしたのは、作成時間がかかってただけだな。
見直すか。

追記:
見直した。ファイルの内容を一発で取ってきてI/Oの回数 = ファイルの数にしてみた。結果

$ time ./build/sash test3.scm
./build/sash test3.scm 0.87s user 0.19s system 89% cpu 1.184 total

倍早くなった。計算部分はキャッシュ自体を小さくするか、より効率的にするしかないな。
ただ、この方法はかなりメモリ効率が悪い。何とかしたいところではある。
(そうは言っても、コンパイルにものすごくメモリを食うので、結果的にキャッシュを使った方がメモリ使用量は少ないが)

No comments:

Post a Comment