在Scheme中是否有等价于Lisp的“运行时”原语?

时间:2010-02-03 20:16:09

标签: lisp scheme racket sicp

根据SICP section 1.2.6,练习1.22:

  

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

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

4 个答案:

答案 0 :(得分:22)

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

您可以在该页面上找到许多类似的功能,但如果只需要为某个功能计时,那么只需使用(time expr )和它将打印出评估表达所花费的时间。

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

答案 1 :(得分:4)

我今天也遇到过这个问题。我正在使用DrRacket,因为它似乎取代了DrScheme。虽然这是一个老线程,但我正在为那些偶然遇到这个帖子的新人添加我的发现。

将R5RS作为所选语言,在程序之前添加以下两行以使其正常工作

(#%require (only racket/base current-milliseconds))
(define (runtime) (current-milliseconds))

答案 2 :(得分:2)

您可以使用 table.setVisible(true); 的{​​{3}}定义的软件包 sicp

contains包装说明。

Here is安装说明:

  • 打开程序包管理器:在DrRacket中,选择菜单文件,然后选择程序包管理器...

  • 在选项卡执行我的意思中找到文本字段,然后输入:runtime

  • 最后单击安装按钮。

现在您可以从SICP调用sicp和其他过程:

runtime

预期输出如下:

#lang sicp
(runtime)

答案 3 :(得分:1)

我正在使用mit-scheme进行SICP,并发现(real-time-clock)按照user manual给出了毫秒数。