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

パッドで提案されているように、VS2012 の外部で実行可能ファイルを実行し、.NET 4.5 に変更しました。これにより、実行時間が均等になりました。

于 2012-11-27T11:32:56.543 に答える
-1

私の答えを見てください: VS2012 でこの F# が非常に遅いのはなぜですか?

Fsharp.core.dll ファイルを exe ファイルに追加して、読み込みを高速化する必要があります。

于 2013-10-29T10:50:35.643 に答える