小编Sto*_*tly的帖子

无点风格的性能影响

我正在学习使用F#进行功能编程的第一步 - 我刚刚遇到了Forward Pipe(|>)和Forward Composition(>>)运算符.起初我以为它们只是糖而不是对最终运行的代码产生影响(尽管我知道管道有助于类型推断).

但是我遇到了这篇SO文章: 函数式编程中"点自由"风格的优点和缺点是什么? 其中有两个有趣且内容丰富的答案(而不是为我简化的事情,开启了围绕"无点"或"无意义"风格的整套蠕虫)我从这些(和其他阅读)带回家是无点的是一个争论的领域.与lambas一样,无点样式可以使代码更容易理解,也可以更难,具体取决于使用情况.它可以帮助有意义地命名.

但我的问题涉及对第一个答案的评论:AshleyF在答案中表示:

"在我看来,组合可能会降低GC的压力,使编译器更明显的是不需要像流水线那样产生中间值; 帮助使所谓的"砍伐森林"问题更容易处理."

加斯奇回复:

"关于改进编译的部分根本不是真的.在大多数语言中,无点样式实际上会降低性能.Haskell在很大程度上依赖于优化,因为它是使这些东西的成本可以承受的唯一方法.充其量,那些组合器被内联,你得到一个相同的有点版本"

任何人都可以扩展性能影响吗?(一般而言,特别是对于F#)我只是假设它是一种写作风格的东西,编译器会将两个习语解开成等效的代码.

performance f# functional-programming pointfree

17
推荐指数
1
解决办法
705
查看次数