【发布时间】:2009-01-10 18:02:01
【问题描述】:
有谁知道与 C# 相比,F# 在性能方面的衡量标准有多好。我有一个 C# 光线追踪器,其中包含许多矢量操作、光线碰撞算法等,我认为它们可能更容易在 F# 中表达。我不是在问 F# 在表达数学问题方面有多好,这已经回答了here,而是我是否应该期待更好或更差的性能?由于光线追踪对性能的要求很高,因此即使是性能不佳的小情况也可能在错误的地方出现问题。
编辑:
似乎已经有很多关于该主题的问题我找不到(如果您实际搜索任何带有术语“F#”的内容,则没有结果)。一个好点here 是以下答案:
F# 提供了一些与性能相关的 可以产生影响的功能。
首先,实施 .NET 上的代表目前相当 效率低下,因此 F# 使用 它自己的 FastFunc 类型用于 高性能一流 功能。
其次,F# 使用 .NET 元数据 传达内联函数,以便它们 可以跨 API 导出,并且 当然,这可以显着提高 在某些情况下的表现。
最后,模式匹配可以 用 C# 表达非常费力 因为语言缺乏模式 匹配但几乎是不可能的 维护优化的 C# 代码 等价于许多非平凡的模式 火柴。相比之下,F# 编译器 积极优化模式匹配 在编译期间。
相反,C# 编译器更好 在使用 IEnumerables 优化循环时 并且更擅长优化 对值类型的计算(例如 复杂的算术)。
干杯,乔恩·哈罗普。
【问题讨论】:
标签: c# performance f#