performance - f# 慢编译

标签 performance compilation f# fsharpcodeprovider

除了(或更好地代替)运行 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/

相关文章:

java - 类文件格式的最终​​变量

java - 从数组中获取随机且不重复的对象

python - 在 Python 中编译 C 代码的问题

.net - 在 F# 中对元组进行排序

list - 使用部分函数短路列表映射

.net - 没有警告错误的沮丧工会案例

python - 解包列表并生成其成员

php - 谷歌地图实现导致谷歌页面速度问题

java - jar 顶层内的多个入口点(主类)

c++ - 在 C++ 中使用脚本语言