编译器优化后如何分析 Haskell?

Posted

技术标签:

【中文标题】编译器优化后如何分析 Haskell?【英文标题】:How to profile Haskell after compiler optimizations? 【发布时间】:2018-08-25 10:27:54 【问题描述】:

我有一个相当复杂且性能关键的 Haskell 程序。我已经使用成本中心分析来优化到没有主要剩余热点的程度。此外,与stack build --profile 相比,使用-O2(并且没有分析)的程序运行速度大约快15 倍,所以我怀疑成本中心分析器是否对发现优化后仍然存在的瓶颈有很大帮助。

在查找优化后仍然存在的热点时,我有哪些选择?我知道棘手的配置文件,但文档中将其描述为不适合“凡人”,而我只是凡人。

【问题讨论】:

我认为这可能太宽泛了,尽管有一个全面的答案会很棒。 @jberryman 我不知道如何才能缩小问题范围;为了问如何让 X 更快(其中 X 是一个运行缓慢的特定任务),我首先需要弄清楚 X 是什么。当然这是一个普遍的需求..? 【参考方案1】:

这是一个很笼统的问题,但是你有没有搜索过空间泄漏?

一个不错的包是weigh。

作者写了一个很好的article关于它。

【讨论】:

以上是关于编译器优化后如何分析 Haskell?的主要内容,如果未能解决你的问题,请参考以下文章

LWN: 如何验证代码是否被编译器优化后出错?

为什么编译器无法自动优化常规递归?

如何防止因编译器开启优化,而导致程序执行错误

Java代码如何优化?从哪些方面入手?分析

编译器优化如何加快简单操作之间的时间?

深入理解jvm - 编译优化(下)