Tiny CLOS on Mosh

IRCで話していたらやる気が出たので Tiny CLOS を動かしてみました。

(define (fib x)
  (if (= x 0)
      1
      (* x (fib (- x 1)))))

(define-generic gfib)

(add-method gfib
  (make-method (list)
    (lambda (call-next-method x)
      (if (= x 0)
          1
          (* x (gfib (- x 1)))))))

(time (bench fib))
(time (bench gfib))

;=>(bench fib) 44
;=>(bench gfib) 57250

ぎゃあ 1000倍以上遅い。動くことが分かったので今度深追いしよう。
こういうのって通常はどれくらい遅い場合ならば許容しているんだろう?