F#和C#的CLR相同,那么为什么F#比C#快?

Inf*_*ner 7 c# clr f#

我很困惑,如果你开导我会很感激.F#使用与C#相同的CLR,底层代码是相同的,那么当用F#编写函数时,如何建议函数运行速度比C#快?如果我只在C#中使用不可变变量并且性能需要尽可能高,那么为什么要使用F#?

Gre*_*mer 14

底层代码是一样的吗?疑.一般来说,F#在某些方面会更快,而在其他方面会更慢.C#也是如此.甚至是VB.每种语言都有其优点.如果在大多数领域中存在整体性能,则它在编译器中.

如果我只在C#中使用不可变变量并且性能需要尽可能高,那么为什么要使用F#?没有理由单独切换性能,如果事实上存在真正的差异,除非性能是你的问题.至于为什么切换如果你只使用C#中的功能,我会说"不要切换".

我喜欢F#.它解决的一些"问题"比C#好得多.但是,即使我有一个问题,它解决得更好,我不一定要切换,因为我必须考虑混合中的开发人员.目前,我知道在这个组织中很少有人对F#有所了解,所以我必须做一个好的商业案例来切换.

最终,您必须查看"业务问题"并确定路径.您必须将"更好"的语言视为组合的一部分,但您还必须检查核心能力等.


kvb*_*kvb 10

1)如果你编写的C#代码和F#代码被编译成完全相同的IL(CLR的中间语言),那么代码将表现出相同的性能特征.但是,在C#和F#中实现相同的算法并不能保证生成完全相同的IL,因此实际性能可能会有所不同.我相信在实践中,有时F#代码会更快,但有时候C#会更快.

2)除了性能之外,选择实现语言的原因有很多.例如,对于某些问题域,有些人发现F#比C#更简洁,可读,更容易推理,这是偏好它的一个原因.对于绝大多数程序而言,用户几乎看不到5%或10%的性能差异,因此如果一种语言提供的性能大致相当,但生产率更高,那么使用该语言就更有意义了.


Sör*_*ren 6

有这样的计算器,前一段时间,它可以帮助你找出一些原因,F#可能会更快的问题.性能增益在很大程度上取决于您使用的应用程序和编码功能.

  • 这可能是因为你的答案最初只是一个问题的链接(现在仍然是).诸如此类的回应更适合作为评论.如果你添加了完整的摘要,那么人们可能不会有问题. (5认同)

Joe*_*ler 6

您可能对F#和C#中与性能相关的功能一文感兴趣.至于"为什么要使用F#",我不能代表你说话,但对我自己来说,我使用F#因为我更喜欢它.