题
我要看看有多长一个功能需要运行。什么是最简单的方法来做到这在专利法条约-计划?理想情况下,我们希望能够这样做:
> (define (loopy times)
(if (zero? times)
0
(loopy (sub1 times))))
> (loopy 5000000)
0 ;(after about a second)
> (timed (loopy 5000000))
Took: 0.93 seconds
0
>
不要紧,如果我们要使用一些其他的语法 (timed loopy 5000000)
或 (timed '(loopy 5000000))
, 或者,如果返回时间采取一个缺点或东西。
解决方案
大多数Scheme实现中用于计时表达式执行的标准名称是“time”。以下是DrRacket中的一个示例。
(定义(循环次数) (如果(零?次) 0 (loopy(sub1次))))
(时间(loopy 5000000)) cpu时间:1526实时:1657 gc时间:0 0
如果您使用时间来对不同的实现进行基准测试, 记得从命令行使用racket而不是直接进行基准测试 在DrRacket中(DrRacket插入调试代码以提供更好的错误消息)。
其他提示
找到它...
从 在线文件:
(time-apply proc arg-list)
调用的程序的程序与参数在arg清单。四值返回:一个列表,其中包含的结果(s)的应用程序的数量毫秒的CPU所需要的时间来获得这一结果,该数量的`真正的"毫秒所需的结果,并毫秒数的CPU时间(包括在第一结果)花费在收集垃圾。
例的使用情况:
> (time-apply loopy '(5000000))
(0)
621
887
0
不隶属于 StackOverflow