MArraysのソート ライブラリに取り組んでいます。速度は重要なので、可能な限り最適化したいと考えています。
現在、並べ替え関数を単純にインライン化しています。これにより、最適化されていないコードと比較して、コードが 10 倍以上高速化されます。ただし、関数が複数の場所で使用されている場合、これによりコード サイズが簡単に爆発し、コンパイルが遅くなる可能性があります。
他の唯一の代替手段は、MArray の既存のすべてのインスタンスに対して関数を SPECIALIZE するようです。これにより、結果のコードも拡大されますが、関数が使用される回数に依存しない一定の係数によってのみ拡大されます。問題は、MArray の新しいインスタンスが出現する可能性があるかどうかです。それとも、MArray は非常に特別で、Haskell の内部にバインドされているので、他のモジュールによって新しいインスタンスが定義されないようにすることができますか?