2011-08-20 80 views
3

有什么我可以做的,使f#代码编译速度更快(或更好,而不是)运行ngen?f#缓慢编译

什么是近似基准“hello world”编译时间(或更好地说,编译器启动时间+编译时间)为说pentium 4机器?

编辑有细微差别,因为它原来:)

因此,首先,任何人都可以解释什么是编译器的启动时间?为什么它很慢。 同样链接到整个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

+0

的 “Hello World” 的标杆编译*错误*,你只是衡量启动开销,并非真正的编译器性能。 –

+0

[f#编译速度太慢]的可能重复(http://stackoverflow.com/questions/4697771/f-compiling-too-slow) –

+0

也许这应该是不同的话题,但什么是启动,如果有可能“启动”一次,如果我必须多次编译? – ren

回答

4

这需要0.9S我的电脑上(AMD速龙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() 
+1

在我的电脑(上网本)上面的代码需要28秒! – 2011-11-05 07:52:01

+0

@ CheckMate9500:你有没有运行ngen?看到http://stackoverflow.com/questions/4697771/f-compiling-too-slow –

+0

我刚刚做到了,编译时间缩短到7秒。 – 2011-11-07 18:16:20