簡単な答えはありますか: GHC はなぜこんなに大きいのでしょうか?
- OCaml: 2MB
- Python: 15MB
- SBCL: 9MB
- OpenJRE - 26MB
- メモリ: 113MB
「Haskell が適切なツールであるなら、なぜサイズを気にする必要がないのか」という伝道には興味がありません。これは技術的な質問です。
ベストアンサー1
ちょっと馬鹿げているかもしれないが、GHCに付属するライブラリはすべて、4種類のフレーバー:
- 静的
- 動的
- プロファイル
- GHCi
GHCi バージョンは、1 つのファイルにリンクされた静的バージョンです.o
。他の 3 つのバージョンに.hi
も、それぞれ独自のインターフェイス ファイル ( ファイル) のセットがあります。プロファイルされたバージョンは、プロファイルされていないバージョンの約 2 倍のサイズのようです (これは少し疑わしいので、その理由を調べる必要があります)。
覚えておいてくださいGHC自体はライブラリであるつまり、GHC のコピーが 4 つ取得されます。それだけでなく、GHC バイナリ自体が静的にリンクされているため、GHC のコピーは 5 つになります。
最近、GHCi が静的ファイルを使用できるようにしました.a
。これにより、これらのフレーバーの 1 つを取り除けます。長期的には、GHC を動的にリンクする必要がありますが、これは大きな変更です。動的リンクをデフォルトにする必要があるためです。C とは異なり、GHC では動的リンクするかどうかを事前に決定する必要があります。また、これが実際に実用的になるまでには、さらに多くの変更 (Cabal やパッケージ システムなど) が必要です。