我最近注意到F#Interactive比编译版本要快得多(在Release或Debug模式下)。下面是一个例子:F#交互速度快于编译
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#交互运行时,输出“4986”。我使用“main [||] ;;”以交互模式运行它。
一些奇怪的事情肯定会发生,但我不知道是什么!
编辑[规格]: F#3.0 for .NET 4.设置优化代码并生成尾部调用标志,我正在为x86编译。我使用的是i7 950.我正在使用visual studio 2012.
什么是您的F#/ .NET框架/ Visual Studio版本?编译版本是x86还是x64?你在VS外面运行编译好的程序吗? – pad
看看这个链接http://msdn.microsoft.com/en-us/magazine/ff714588.aspx –
对不起,我真的应该把我的规格,我非常愚蠢。 F#3.0 for .NET 4.优化代码并生成尾部调用标志,我正在为x86编译。我正在使用i7 950.我正在使用visual studio 2012. – Maltic