F#Interactive比编译时更快

时间:2012-11-27 09:39:10

标签: f#

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:-1)

请参阅我的回答:What makes this F# so slow in VS2012?

您必须将Fsharp.core.dll文件添加到您的exe文件中,以使其加载速度更快。