除了(或更好地代替)运行 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
最佳答案
这在我的计算机上需要 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()
关于performance - f# 慢编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7133908/