30

根据SICP 第 1.2.6 节,练习 1.22:

大多数 Lisp 实现都包含一个称为 runtime 的原语,它返回一个整数,该整数指定系统运行的时间量(例如,以微秒为单位)。

我正在使用DrScheme,其中运行时似乎不可用,所以我正在寻找一个好的替代品。我在 PLT-Scheme Reference 中发现有一个current-milliseconds原语。有谁知道Scheme中是否有分辨率更好的计时器?

4

4 回答 4

23

current-milliseconds是一个从系统返回当前毫秒计数的函数,但它可能会减少。 current-inexact-milliseconds类似,但返回一个保证增加的浮点数。

您还可以在该页面上找到许多类似的函数,但如果您只需要对某个函数计时,那么只需使用 ( expr ),它就会打印出计算表达式所花费的时间。time

与此相关的另一件事是profiler,以防您需要对代码进行更详细的分析。

于 2010-02-03T22:03:51.093 回答
6

我今天也遇到了这个问题。我正在使用 DrRacket,因为它似乎已经取代了 DrScheme。虽然这是一个旧线程,但我正在为任何偶然发现这个线程的新人添加我的发现。

以 R5RS ( #lang r5rs) 为选定语言,在程序前添加以下两行使其工作

(#%require (only racket/base current-milliseconds))
(define (runtime) (current-milliseconds))
于 2016-07-17T16:40:43.483 回答
2
于 2020-11-29T01:08:00.570 回答
1

我正在使用 mit-scheme 进行 SICP,发现毫秒是根据(real-time-clock)用户手册给出的。

于 2020-06-09T06:36:01.110 回答