5

除了运行 ngen(或更好地代替)运行 ngen 之外,我能做些什么来使 f# 代码编译得更快吗?

说奔腾4机器的近似基准“hello world”编译时间(或者更好地说编译器启动时间+编译时间)是多少?

编辑事实证明有细微差别:)

那么首先,谁能解释一下编译器的启动时间是什么?为什么它很慢。还可以链接到有关整个 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

这在我的电脑上需要 0.9 秒(AMD Athlon 64 X2 4600):

#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 回答