PLT方案中的时间码

Cla*_*diu 2 time scheme timing racket

我想看一个函数运行多长时间.在PLT-Scheme中最简单的方法是什么?理想情况下,我希望能够做到这样的事情:

> (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
> 
Run Code Online (Sandbox Code Playgroud)

这不要紧,如果我不得不使用一些其他类似语法(timed loopy 5000000)或者(timed '(loopy 5000000)),或者如果它返回一个缺点或东西所花费的时间.

soe*_*ard 5

在大多数Scheme实现中,用于计时表达式执行的标准名称是"time".以下是DrRacket中的一个示例.

(定义(循环次数)(if(zero?times)0(loopy(sub1 times))))

(时间(loopy 5000000))cpu时间:1526实时:1657 gc时间:0 0

如果您使用时间对彼此的不同实现进行基准测试,请记住使用命令行中的racket而不是直接在DrRacket中进行基准测试(DrRacket会插入调试代码以提供更好的错误消息).