2009-09-05から1日間の記事一覧

inline #3 どう展開すりゃいいんだ?

(let ((arg1 value1) (arg2 value2) ...) <body>) 機械的に展開できるのはここまでで、これ以上は手動で定義してやらにゃならんような。理想としては ;;; 関数定義 (defun ev-oddp (obj) (oddp (example-value obj))) ;;; 関数呼び出し (ev-oddp X) ;;; たぶん最も</body>…

inline #2 compiler::optimize-form

lisp/compile.l を眺めてたら (get 'compiler::optimize-form) に関数を突っ込んでおくと compile 時に inline 展開してくれるっぽいことを発見。compiler::optimize-form に突っ込む関数は 対象の を呼び出す form を受け取る その呼び出す form があったと…

inline #1 ほんとに速くなる?

結論: それなりに速くなる、と思ってよさそう。 「それなりに」というのは、今回やったのは処理自体がそんなに時間かかるものではないので関数呼び出しのオーバーヘッドが相対的に大きかったはず。つまり実際の処理がもっと時間かかるものだと関数呼び出しの…