方法 "runtime" 和 "system-clock" 总是 return 0.1

Methods "runtime" and "system-clock" always return 0.1

根据手册,方法 runtimesystem-clock return:

the amount of process time, in seconds, that has elapsed since Scheme was started.

但是,在 REPL 中调用它们总是 return 值 0.1:

1 ]=> (runtime)
;Value: .01
1 ]=> (system-clock)
;Value: .01

知道这里发生了什么吗?

mit-scheme版本:

Release 9.1.1 || Microcode 15.3 || Runtime 15.7 || SF 4.41 || LIAR/x86-64 4.118

这些过程不会为您提供自您启动方案以来实际经过的时间,而是处理方案代码所花费的时间,不包括系统调用。因此,您计算了两个花费很短时间的表达式,并且不包括您查看提示或编写代码的时间,因为它在等待一行输入时不处理任何内容。

下面的代码需要将近 2 秒才能完成,果然它表明它已经工作了 1.49 秒。

(begin
  (define (fib n)
    (if (< n 2)
        n
        (+ (fib (- n 1)) (fib (- n 2)))))

  (fib 30)
  (system-clock))
; ==> 1.49