根据SICP 第 1.2.6 节,练习 1.22:
大多数 Lisp 实现都包含一个称为 runtime 的原语,它返回一个整数,该整数指定系统运行的时间量(例如,以微秒为单位)。
我正在使用DrScheme,其中运行时似乎不可用,所以我正在寻找一个好的替代品。我在 PLT-Scheme Reference 中发现有一个current-milliseconds原语。有谁知道Scheme中是否有分辨率更好的计时器?
根据SICP 第 1.2.6 节,练习 1.22:
大多数 Lisp 实现都包含一个称为 runtime 的原语,它返回一个整数,该整数指定系统运行的时间量(例如,以微秒为单位)。
我正在使用DrScheme,其中运行时似乎不可用,所以我正在寻找一个好的替代品。我在 PLT-Scheme Reference 中发现有一个current-milliseconds原语。有谁知道Scheme中是否有分辨率更好的计时器?
current-milliseconds
是一个从系统返回当前毫秒计数的函数,但它可能会减少。 current-inexact-milliseconds
类似,但返回一个保证增加的浮点数。
您还可以在该页面上找到许多类似的函数,但如果您只需要对某个函数计时,那么只需使用 ( expr ),它就会打印出计算表达式所花费的时间。time
与此相关的另一件事是profiler,以防您需要对代码进行更详细的分析。
我今天也遇到了这个问题。我正在使用 DrRacket,因为它似乎已经取代了 DrScheme。虽然这是一个旧线程,但我正在为任何偶然发现这个线程的新人添加我的发现。
以 R5RS ( #lang r5rs
) 为选定语言,在程序前添加以下两行使其工作
(#%require (only racket/base current-milliseconds))
(define (runtime) (current-milliseconds))
我正在使用 mit-scheme 进行 SICP,发现毫秒是根据(real-time-clock)
用户手册给出的。