用F#测量执行时间

时间:2010-12-24 21:11:30

标签: f# time measure

请在F#中发布显示时间的代码。我注意到你可以使用#time指令从F#interactive中测量它,但我不知道如何从FSI执行程序

由于

4 个答案:

答案 0 :(得分:48)

我只会使用.NET Stopwatch类。

let stopWatch = System.Diagnostics.Stopwatch.StartNew()
...
stopWatch.Stop()
printfn "%f" stopWatch.Elapsed.TotalMilliseconds

答案 1 :(得分:29)

来自msdn:

  

#time 单独切换是否显示效果信息。   启用后,F#Interactive会测量实时,CPU时间和   每个代码段的垃圾收集信息   解释和执行。

因此,要测试您的功能,您必须打开F#交互式控制台并在其中执行您的功能(一种方法是选择您的功能,右键单击并选择交互式执行) 然后在Interactive中调用您的函数,例如:

//首先在交互式控制台或文档中定义您的函数:

let square x = x * x

// in interactive
#time
square 10
#time

您将看到计算上花费了多少实时和CPU时间以及来自垃圾收集器的一些信息

答案 2 :(得分:21)

查看F Sharp Programming wikibook中的计时器功能。它的定义如下:

let duration f = 
    let timer = new System.Diagnostics.Stopwatch()
    timer.Start()
    let returnValue = f()
    printfn "Elapsed Time: %i" timer.ElapsedMilliseconds
    returnValue    

虽然像这样使用:

let sample() = System.Threading.Thread.Sleep(2)

duration ( fun() -> sample() )
// or
duration sample

答案 3 :(得分:0)

您还可以创建自定义计算表达式来隐藏实际的测量逻辑,例如:

timer {
   // your code goes here
}

在此处查看更多示例:https://fsharpforfunandprofit.com/posts/computation-expressions-bind/