nptclのブログ

Common Lisp処理系nptの開発メモです。https://github.com/nptcl/npt

少し早くなったので諦める

以前の結果はこれで、

$ time npt --script mk.eastasian.lisp

real    0m57.098s
user    0m56.853s
sys     0m0.233s

今回の結果はこれ。

$ time npt --script mk.eastasian.lisp

real    0m23.119s
user    0m22.831s
sys     0m0.283s

半分以上早くなっていますね。
わりといい結果だと思います。

ちなみにclisp

$ time clisp -m 2g mk.eastasian.lisp

real    0m2.294s
user    0m2.276s
sys     0m0.016s

clispと張り合っても仕方が無いので、改造はこれで終わり!
当分はこの速度でやっていくと思います。

何をして早くしたのか

いつかはThreadに対応させたい!
と思ってmutex lockしてた部分を大体消しました。
これだけで次の結果。

$ time npt --script mk.eastasian.lisp

real    0m34.106s
user    0m33.817s
sys     0m0.284s

ガベージコレクタの方式を変えればどうかな?
色々考えて実験した結果が次の通り。

$ time npt --script mk.eastasian.lisp

real    0m57.098s
user    0m56.853s
sys     0m0.233s

全然ダメ。
戻します。

よく見るとThread用にheapやらgcやらも いらない処理が多分に含まれていたので全部削除。

$ time npt --script mk.eastasian.lisp

real    0m23.119s
user    0m22.831s
sys     0m0.283s

早くなった。
あとは何したら早くなるんだろう。
全然わからない。