根据SICP section 1.2.6,练习1.22:
大多数Lisp实现包含一个名为runtime的原语,它返回一个整数,指定系统运行的时间(例如,以微秒为单位)。
我正在使用DrScheme,其中运行时似乎不可用,所以我正在寻找一个好的替代品。我在PLT-Scheme Reference中发现有一个current-milliseconds原语。有谁知道Scheme中的计时器是否具有更好的分辨率?
答案 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给出了毫秒数。