問題4.24 – SICP(計算機プログラムの構造と解釈)その197
2009年06月09日
問題4.24
手続き driver-loop
の eval
部分を time
で計測する。
(define (driver-loop) (prompt-for-input input-prompt) (let ((input (read))) (let ((output (time (eval input the-global-environment)))) (announce-output output-prompt) (user-print output))) (driver-loop))
以下の手続きで Fibonacci 数の計算にかかる時間を、初めの超循環評価器と4.1.7節の構文解析を実行から分離した版とで比較する。
(define (fib n) (define (fib-iter a b count) (if (= count 0) b (fib-iter (+ a b) a (- count 1)))) (fib-iter 1 0 n))
初めの超循環評価器の場合
;;; M-Eval input: (fib 100000) ;(time (eval input the-global-environment)) ; real 5.994 ; user 5.870 ; sys 0.090
4.1.7節の構文解析を実行から分離した版
;;; M-Eval input: (fib 100000) ;(time (eval input the-global-environment)) ; real 5.121 ; user 4.980 ; sys 0.080
構文解析が余分に行われる初めの超循環評価器の方が処理に時間がかかっている。
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542