4

我最近注意到 F# Interactive 比编译版本快得多(在发布或调试模式下)。这是一个例子:

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 [||];;”在交互模式下运行它。

肯定会发生一些奇怪的事情,但我不知道是什么!

编辑[规格]:. NET 4 的 F# 3.0。优化代码和生成尾调用标志已设置,我正在为 x86 编译。我在 i7 950 上运行它。我正在使用 Visual Studio 2012。

4

2 回答 2

3

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

于 2012-11-27T11:32:56.543 回答
-1

请看我的回答:是什么让这个 F# 在 VS2012 中这么慢?

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

于 2013-10-29T10:50:35.643 回答