13

我正在为MArrays开发一个排序库。速度很重要,所以我想尽可能地优化它。

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

唯一的另一种选择似乎是专门针对所有现有的 MArray 实例的函数。这也扩大了生成的代码,但只是增加了一个常数因子,这与函数的使用次数无关。问题是,是否有可能出现 MArray 的新实例?还是 MArray 如此特殊并且绑定到 Haskell 的内部结构,以便我可以确定其他模块不能定义新实例?

4

1 回答 1

3

似乎最好的方法是使用INLINE编译指示。sort来自矢量算法的 也使用它

于 2013-02-03T13:40:32.913 回答