5

ngenを実行する以外に(または代わりに)f#コードをより高速にコンパイルするためにできることはありますか?

そして、たとえばpentium 4マシンのベンチマーク「HelloWorld」コンパイル時間(または、コンパイラの起動時間+コンパイル時間)はどれくらいですか?

編集結局のところ、ニュアンスがあります:)

では、最初に、コンパイラの起動時間は誰か説明できますか?そして、なぜそれは遅いのですか。また、f#コンパイルプロセス全体に関する情報へのリンクをいただければ幸いです。

コンテキスト:f#コンパイラは、コードの小さなスニペットで繰り返し呼び出されます。

using (CodeDomProvider provider = new Microsoft.FSharp.Compiler.CodeDom.FSharpCodeProvider())
{
  //start time
  cr = provider.CompileAssemblyFromSource(cp, new string[] { data.Program });
  //end time
}

時間差は約6秒です。それで、問題は基本的に、ngen以外に何ができるかということです。あなたはここであなた自身のために見ることができます:rundotnet

4

1 に答える 1

5

これは私のコンピューター(AMD Athlon 64 X2 4600)で0.9秒かかります:

#r "FSharp.Compiler.CodeDom"

open System.Reflection
open System.CodeDom.Compiler
open Microsoft.FSharp.Compiler.CodeDom

let comp() =
    use provider = new FSharpCodeProvider() 
    let code = "module pp\n printfn \"Hello world\""
    let cp = new CompilerParameters() 
    cp.GenerateInMemory <- true 
    provider.CompileAssemblyFromSource(cp, [|code|]) |> ignore
#time
comp()
于 2011-08-20T23:34:44.130 に答える