リリカルLisp ver1.6

リリカルLisp ver1.6を公開しました。
約7ヶ月ぶりの更新です。

今回の変更点は高速化です。
今まで評価した引数をリストにつないでいた(いわゆるevlisを使っていた)ものを、
スタックに積む(つまり普通の手法)ものに書き換えました。
速さと引換に伝統的なLispインタプリタらしさが失われた感じです。
ちなみに、環境はいまだに連想リストで表現しているので、まだまだ速くできます。

ベンチマークとしてfib関数
(define(fib n)(if (<= n 1)1(+(fib(- n 1))(fib(- n 2)))))
(fib 12) を評価したところ、以下のような結果となりました。

バージョン 実行時間(秒) GC回数
1.5 55.855 3
1.6 46.512 1

ヒープへのアロケーションが減った結果、GC回数が削減され、実行時間も短縮されました。
GCが発生しないプログラムでも速くなる(ことがある)ことを確認しています。

何でもかんでもスタックに置くと、apply関係で面倒な事もあるのですが、
まあ、リリカルLispで非常に長いリストを作ることもないだろうと考え、
特に工夫はしないことにしました。

--

リリカルLispを作り始めたのは、私zickが学部1回生のときですが、
気がつけば修士2回生になっており、この3月で学生生活も終わりです。
今後どうなるかはわかりませんが、
可能な範囲でリリカルLispのメンテは続けていこうと思います。
githubで公開しても、誰もメンテしてくれないしね。

3 Responses to “リリカルLisp ver1.6”

  1. tokumei より:

    >githubで公開しても、誰もメンテしてくれないしね。
    どのファイルにもライセンスが書いてない(気がする)のでgithubでのforkすら躊躇ってしまう・・・・・・
    ファイルは全部BSDLなんでしょうか?

  2. zick より:

    ご指摘ありがとうございます。
    ファイルはすべて修正BSDライセンスです。
    「LICENSE」というファイルを追加したのでそちらをご確認ください。

  3. […] 前エントリに tokumei より: 2012年5月28日 6:29 AM >githubで公開しても、誰もメンテしてくれないしね。 どのファイルにもライセンスが書いてない(気がする)のでgithubでのforkすら躊躇ってし […]

Leave a Reply