Scheme中是否有一个与Lisp的“runtime”原语等价的元素?

Scheme中是否有一个与Lisp的“runtime”原语等价的元素?,lisp,scheme,racket,sicp,Lisp,Scheme,Racket,Sicp,根据,练习1.22: 大多数Lisp实现都包含一个名为runtime的原语,该原语返回一个整数,该整数指定系统已运行的时间量(例如,以微秒为单位) 我使用的是,运行时似乎不可用,所以我正在寻找一个好的替代品。我在PLT方案参考中发现有一个原语。有人知道方案中是否有分辨率更好的计时器吗?是一个从系统返回当前毫秒计数的函数,但它可能会减少。类似,但返回一个保证增加的浮点数 在该页面上还可以找到许多类似的函数,但是如果您只需要对某个函数计时,那么只需使用expr,它就会打印出计算表达式所用的时间 另一

根据,练习1.22:

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

我使用的是,运行时似乎不可用,所以我正在寻找一个好的替代品。我在PLT方案参考中发现有一个原语。有人知道方案中是否有分辨率更好的计时器吗?

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

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


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

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

在选择R5RS语言和R5RS语言的情况下,在程序之前添加以下两行以使其正常工作

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

我使用mit scheme进行SICP,发现毫秒是由实时时钟给出的。

您可以使用包含运行时定义的软件包SICP

包装说明

以及安装说明:

打开软件包管理器:在DrRacket中选择菜单文件,然后选择软件包管理器

在选项卡中,按我的意思操作,找到文本字段并输入:sicp

最后单击Install按钮

现在,您可以从SICP调用运行时和其他过程:

#lang sicp
(runtime)
预期输出如下所示:

1606611898030115
> 

那是错误的。首先,SICP和PLT之间没有直接关系。其次,毫秒计数器来自操作系统,由于中断处理程序是在几毫秒的级别上处理的,因此没有必要使用更精细的计数器。粒度通常在20毫秒左右,甚至不是1毫秒。如果你有一些语言,例如,一个纳秒计数器,你不会得到任何更好的结果。第三,在毫秒级测量运行时是个坏主意,您需要重复计算足够的次数以获得大量计数,否则运行时将在噪声中丢失。它是当前毫秒,而不是当前毫秒。我试图编辑答案,但编辑过程中至少需要6个字符。我恰好遇到了这个问题:有趣的是,我正在使用蜥蜴比尔的博客来检查我的答案,因为我在经历SICP 4年后正在经历它。当你问这个问题时,你看到了吗,蜥蜴先生?这里有一个在racket中工作的替代计时素数测试的要点:你能说出准确的语言吗。。。请用绳子?lang R5RS不起作用。好的,我只是在这本书代码的不完整if中添加了一个else分支,这样它就可以在lang racket中运行了。@Zelphir:我通常只是从左下角选择R5RS作为DrRacket中的语言。那时候对我来说很有效,是朗·R。