【问题标题】:frege pure functions and performance optimizationsfrege 纯函数和性能优化
【发布时间】:2015-11-10 21:33:14
【问题描述】:

我对 haskell 的纯函数的理解是,它们可以实现缓存等性能优化(因为纯函数每次对相同的输入返回相同的结果)。 frege 的纯函数有哪些性能优化?

【问题讨论】:

    标签: frege


    【解决方案1】:

    当然不缓存。我不知道有什么语言会自动执行此操作,并且有充分的理由。

    我们目前所做的是内联、减少 beta 和消除某些价值构造和解构。例如,当您有:

    case (\a -> (Just a, Just a)) 42 of (Just b, Just c) -> [c,b]
    

    编译器只是生成代码来构建列表

    [ 42, 42 ]
    

    乍一看这看起来不是很有用,因为肯定没有人会编写如此臃肿的代码。但是,请考虑 lambda 表达式可能是内联某些其他函数的结果。事实上,在像一元代码这样高度抽象的代码中,(>>=) 运算符的扩展通常会导致可以通过这种方式优化的代码。

    虽然在某些情况下内联和减少 beta 是好的,但必须注意不要过度使用,以免导致代码膨胀。尤其是在JVM环境中,拥有庞大的函数(即方法)是不利的。 JIT 可以而且将会为小型方法做得很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-24
      • 1970-01-01
      • 2023-03-05
      • 2013-01-19
      • 2013-10-05
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      相关资源
      最近更新 更多