SICP問題4.24

始めの超循環評価器とこの節での版の速度を比較する
以下の要領で time マクロを組み込みeval実行時間を計測する

(define (driver-loop)
  (prompt-for-input input-prompt)
  (let ((input (read)))
    ;; time マクロを組み込む
    (let ((output (time (eval input the-global-environment))))
      (announce-output output-prompt)
      (user-print output)))
  (driver-loop))

以下のfibを定義し、(fib 1000)を実行する

(define (fib n)
  (define (iter a b count)
    (if (= count 0)
        b
        (iter (+ a b) a (- count 1)))
    )
  (iter 1 0 n))
;; fibの実行
(fib 1000)

始めの超循環評価器

;;; M-Eval input:

;(time (eval input the-global-environment))
; real   0.094
; user   0.093
; sys    0.000

この節の超循環評価器(評価と解析が分離された版)gosh> (driver-loop)

;(time (eval input the-global-environment))
; real   0.063
; user   0.047
; sys    0.015

構文解析を余分に行わない分、この節の超循環評価器の方が早い。