我正在为sorting library开发MArrays。速度很重要,因此我想尽可能地对其进行优化。

目前,我只是INLINE排序功能。与未优化的代码相比,这可以使代码加速10倍以上。但是,如果在多个地方使用这些函数,则很容易导致代码大小爆炸,并减慢了编译速度。

似乎唯一的其他选择是对MArray的所有现有实例进行功能特殊化。这也扩大了结果代码,但是仅增加了一个常数,这与使用函数的次数无关。问题是,是否有可能出现MArray的新实例?还是MArray如此特殊并绑定(bind)到Haskell的内部结构,以便我可以确定其他模块无法定义新实例?

最佳答案

似乎最好的方法是使用INLINE编译指示。 sort 来自vector-algorithms uses it too

08-27 01:38