一年が経ちました
早いもので一年が経過しました。
npt
の開発のために立ち上げたブログですが、
思ったより進んだような気がします。
ブログを書き始めた当時なんて、絶対作れないと思ってたんですが、
あと残り3つの関数を作成できれば完成です。
ただ、ここからが長いかもしれません。
今回はnpt
の致命的な欠点を話題に出します。
それは速度です。
遅すぎる。
まあバグがいっぱいあるのも致命的なんですけどね。
npt
はネイティブな機械語を使っていないので遅いのは当然なのですが、
それにしたって、まともに使用できる限界を超えています。
例として、npt
のC言語のソースを生成するプログラムである、
mk.eastasian.lisp
というプログラムの実行時間を示します。
$ time sbcl --script mk.eastasian.lisp real 0m0.119s user 0m0.083s sys 0m0.016s $ time ccl -l mk.eastasian.lisp -e '(quit)' real 0m0.359s user 0m0.154s sys 0m0.008s $ time clisp -m 2g mk.eastasian.lisp real 0m2.291s user 0m2.285s sys 0m0.011s $ time npt --script mk.eastasian.lisp real 1m1.046s user 0m58.610s sys 0m2.425s
sbcl
とccl
は機械語で実行できるため、とても早く1秒以内で終わっています。
機械語を用いていないclisp
でも2.2秒。
それに対してnpt
は1分越え。ひどい。
sys
が2秒越えって、何に使ってるんだ?
インタープリタの部分が致命的にダメなのだとは思います。
標準関数はC
で書かれているので、たぶん早いはずなんです。
色々な工夫をしているはずなのですが、どうしたらいいんでしょうね。
とりあえずは最適化を作ろうかと思っています。
現状では、一切の最適化が存在してないのです。
それ以外にも、速度の改善は優先して行おうと思います。
というのも自分が使いたいんです。
これじゃあ使い物にならん。
この遅さなら最適化だけではどうにもならないでしょう。
ダメなら全体の考え直しです。
つらいけど、でもまあ仕方がない。
どうしていいのか全然わからないので、
できることを一つずつやって行こうと思います。
速度を解決しないとどうにもなりませんね。