又一次,我们Tweag团队又有了令人兴奋的发现 – 我们如何让 Glasgow Haskell 编译器释放代码时更快。

GHC是一个重要的Haskell编译器,用于编译我们Tweag团队的所有Haskell代码 – 从数据科学、数据库、Web开发到数字货币交易所的后端。而当我们需要调整代码的性能和可靠性时,我们的时间非常紧迫,因此我们非常在乎GHC的性能。

我们最近对GHC进行了一些研究和测试,希望找到提高代码释放速度的方法。通过分析编译器发出的指令,我们发现GHC本质上是在将一堆中间表示 (IR) 编译成最终机器代码。然而,从IR到机器代码的转换可以是一个非常昂贵的过程,而GHC的性能瓶颈正是出现在此处。

为了解决这个问题,我们想到了一些创新的技术路子,包括使用SSA形式避免IR中的大部分表达式复制,以及使用基于指针的数组处理内存操作,我们称之为”Pointified Array”技术。最终,我们成功地使GHC释放代码时的速度提升了将近40%!

这是一个非常重要的发现,因为它有助于提高大型Haskell应用程序的效率,增加工作效率和用户满意度。我们非常期待能够继续在这条路上前进,并为Haskell开发者带来更加优秀的工具和开发环境。

详情参考

了解更多有趣的事情:https://blog.ds3783.com/