Haskell中可能的优化还没有在GHC中实现?

时间:2011-01-18 04:30:54

标签: haskell optimization compiler-construction ghc

因此,由于纯代码和不纯代码之间的明确分离,纯函数式语言具有自己的潜在类别。我已经看到了一些在Haskell中实现起来比较简单的功能,如Nested Data ParallelismStream Fusion

我的问题是,在可行性/简单性方面但尚未实现的Haskell或多或少独特的其他改进/优化是什么? (我主要关心的是GHC,但也喜欢听到别人的声音)

3 个答案:

答案 0 :(得分:26)

我希望在GHC中看到的一个优化是超级编译。然而,在GHC的不久的将来,这似乎不太可能,因为它是整个程序的优化,GHC非常关注于一次编译模块。

基本上,超级编译在编译时尽可能多地执行程序。它自然地包含内联,砍伐森林,专业化和许多其他技术。早期的实验结果很有希望,但这是一个非常昂贵的过程。很难看出它是一个实用的优化,但这个概念非常棒。

答案 1 :(得分:2)

SPJ在其关于模块化超级编译的论文中指出的另一个问题是将超级编译与拆箱结合起来。在超级编译程序中拆箱的可能性显着降低。与通过GHC strict-analyzer / unboxer传递的未优化程序相比,这会导致性能下降。见http://research.microsoft.com/en-us/um/people/simonpj/papers/supercompilation/

答案 2 :(得分:1)

另一个强大但又“尚未准备好生产使用”的技术是worker-wrapper transformation