我要看看有多长一个功能需要运行。什么是最简单的方法来做到这在专利法条约-计划?理想情况下,我们希望能够这样做:

> (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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top