我正在为MArrays开发一个排序库。速度很重要,所以我想尽可能地优化它。
目前,我只是内联排序功能。与未优化的代码相比,这将代码加速了 10 倍以上。但是,如果在多个地方使用这些函数,这很容易导致代码大小爆炸,并减慢编译速度。
唯一的另一种选择似乎是专门针对所有现有的 MArray 实例的函数。这也扩大了生成的代码,但只是增加了一个常数因子,这与函数的使用次数无关。问题是,是否有可能出现 MArray 的新实例?还是 MArray 如此特殊并且绑定到 Haskell 的内部结构,以便我可以确定其他模块不能定义新实例?