请在F#中发布显示时间的代码。我注意到你可以使用#time指令从F#interactive中测量它,但我不知道如何从FSI执行程序
由于
答案 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/