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
構文解析を余分に行わない分、この節の超循環評価器の方が早い。