GHC はなぜこんなに大きいのですか? 質問する

GHC はなぜこんなに大きいのですか? 質問する

簡単な答えはありますか: 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 やパッケージ システムなど) が必要です。

おすすめ記事