我怎样才能获得GHC最聪明的优化?

ree*_*eem 18 optimization haskell ghc compiler-optimization

因为我可以看到它的出现:这是一个不同的问题,而GHC可以实现哪些优化可靠?因为我不是要求最可靠的优化,只是最聪明/最强大的优化.

我特别希望GHC能够对性能产生严重影响的非直观优化,并展示与惰性评估或纯度相关的编译器优化的强大功能.并直接解释如何实现它们.

最好的答案将是:

  • 优化的解释以及为什么它如此聪明或强大
  • 为何优化可以提高性能
  • GHC如何识别何时可以使用此优化
  • 优化实际上将代码转换为什么
  • 为什么这种优化需要惰性评估或纯度

Dir*_*ple 3

流融合可能是最大的一种。它将sum . map (+1) . filter (>5)名义上分配两个新列表的类似 的东西变成一个在常量空间中运行的简单循环。

  • 然而,这不是“ghc”优化,而是实际上作为一组重写规则实现的库优化。编译器没有内置支持使用融合优化列表。 (6认同)