【发布时间】:2010-06-29 21:15:12
【问题描述】:
我有这个代码:
for i in 1 .. 10 do
let (tree, interval) = time (fun () -> insert [12.; 6. + 1.0] exampletree 128.)
printfn "insertion time: %A" interval.TotalMilliseconds
()
时间函数定义为
let time f =
let start = DateTime.Now
let res = f ()
let finish = DateTime.Now
(res, finish - start)
函数 insert 在这里无关紧要,除了它不使用突变并因此每次都返回相同的值。
我得到了结果:
insertion time: 218.75
insertion time: 0.0
insertion time: 0.0
insertion time: 0.0
insertion time: 0.0
insertion time: 0.0
insertion time: 0.0
insertion time: 0.0
insertion time: 0.0
insertion time: 0.0
问题是为什么代码只计算一次结果(从插入时间来看,结果总是正确且相等)?另外,如何强制程序进行多次计算(我需要它来进行分析)?
编辑:Jared 提供了正确的答案。现在我知道要查找什么了,我可以从a timeit function for F# 获取秒表代码
我得到了以下结果:
insertion time: 243.4247
insertion time: 0.0768
insertion time: 0.0636
insertion time: 0.0617
insertion time: 0.065
insertion time: 0.0564
insertion time: 0.062
insertion time: 0.069
insertion time: 0.0656
insertion time: 0.0553
【问题讨论】: