F#Interactive比编译时更快

我最近注意到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.

最佳答案 按照pad的建议,在VS2012之外执行可执行文件,然后更改为.NET 4.5.这平衡了运行时间.

点赞