FSharp.Core没有优化?

em7*_*m70 2 f# cil

我最近检查过F#应用程序的性能,在挖掘CIL时我发现FSharp.Core(适用于.NET v4.0)包含几个nop指令,许多未使用的变量和变量只能写入/读取一次通过stloc/ldloc指令序列.
我已经调查了可能的原因,我注意到即使在发布模式下,F#程序集也包含--debug:pdbonly指令,并且没有办法禁用它并从项目设置UI切换到--debug-.
我想知道FSharp.Core的编译设置是否有特定的选择,如果是这样的话.否则,期望完全优化的运行时版本是合法的吗?

Bri*_*ian 5

似乎对这个问题的评论已经回答了大约90%; 重申一下:

  • 宇宙中几乎每个发布二进制文件都是用--debug:pdbonly编译的
  • 即使IL代码是次优的,由于JIT将其优化,这可能不会产生任何实际影响

当然,F#编译器有可能以各种方式发出更好的代码(这可能适用于每个编译器); 如果您对自己的应用进行了分析并注意到一些不好的事情(例如,与C#中的可比代码相比存在很大的差异),那么您可以通过邮寄fsbug来让F#团队知道.但首先要衡量.