方法 "runtime" 和 "system-clock" 总是 return 0.1
Methods "runtime" and "system-clock" always return 0.1
根据手册,方法 runtime
和 system-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
根据手册,方法 runtime
和 system-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