ryos36の日記 (Scheme Switch)

 | 

2008-01-27

core のロードセーブ

00:32

sbcl で毎回 cl-ppcre をロードすると遅い。core を作ることで劇的(というほどでもないか)に早くなった。

(progn
  (require :asdf)
  (require :asdf-install)
  (require :sb-sprof)

  (require :cl-ppcre)

  (pushnew :michaelw-core *features*)
  (save-lisp-and-die "/tmp/test.core"))

clisp では

(ext:saveinitmem "lispinit.mem")

cl-ppcre を予め core に登録したかったので

(asdf:oos 'asdf:load-op 'cl-ppcre)
(ext:saveinitmem "lispinit.mem")

実行は lisp -M lispinit.mem か --norc をつける。わたしは -E EUC-JP -q もつけている。

コアのセーブとか SmallTalk みたいだな。

おまけ

(setf *tp* "\\[\\[([^\\[\\]]+)\\]\\]")

(defun my-make-list (str &optional (i 0) (lst nil) &key (test *tp*))
  (multiple-value-bind (starti endi sub) (scan test str :start i)
    (if (null starti)
      (nreverse lst)
      (progn
        (setf lst (cons (list starti endi (subseq str (+ starti 2) (- endi 2)))
lst))
        (my-make-list str endi lst)))))
 |