我想看一个函数运行多长时间.在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 >
这不要紧,如果我不得不使用一些其他类似语法(timed loopy 5000000)
或者(timed '(loopy 5000000))
,或者如果它返回一个缺点或东西所花费的时间.
在大多数Scheme实现中,用于计时表达式执行的标准名称是"time".以下是DrRacket中的一个示例.
(定义(循环次数)(if(zero?times)0(loopy(sub1 times))))
(时间(loopy 5000000))cpu时间:1526实时:1657 gc时间:0 0
如果您使用时间对彼此的不同实现进行基准测试,请记住使用命令行中的racket而不是直接在DrRacket中进行基准测试(DrRacket会插入调试代码以提供更好的错误消息).