我最近注意到F#Interactive比编译版本快得多(在Release或Debug模式下)。这是一个例子:
let rec fib n = if n < 3 then 1 else fib (n-1) + fib (n-2)
[<EntryPoint>]
let rec main argv =
let w = System.Diagnostics.Stopwatch()
w.Start()
fib 45
w.Stop()
printfn "%d" w.ElapsedMilliseconds
System.Console.ReadLine()
0
在发布模式下编译时,运行此输出“12784”,在F#Interactive中运行时输出“4986”。我正在使用“main [||] ;;”。
在交互模式下运行它奇怪的是肯定会发生,但我不知道是什么!
编辑[规范]: F#3.0 for .NET 4.优化代码和生成尾调用标志已设置,我正在为x86编译。我在i7 950上运行它。我正在使用visual studio 2012。
答案 0 :(得分:3)
按照pad的建议,在VS2012之外运行可执行文件,然后更改为.NET 4.5。这平衡了运行时间。
答案 1 :(得分:-1)
请参阅我的回答:What makes this F# so slow in VS2012?
您必须将Fsharp.core.dll文件添加到您的exe文件中,以使其加载速度更快。