"ld" memory usage

Bertram Felgenhauer bertram.felgenhauer at googlemail.com
Sat Apr 17 09:59:16 EDT 2010

Roman Beslik wrote:
> This is not strictly a GHC question. I observed that "ld" when
> linking GHC-compiled programs eats 0.5 GB of resident memory. ~3
> times more than GHC or Haddock.

Oh I remember investigating this problem 2 years ago. Looking back it
seems I never made my observations public.

GNU ld uses hash tables to store the symbols of each object file. The
default size of those hash tables is 4051, which is a huge waste in
Haskell's split-objs case, where object files are plenty and only have
a couple of dozen symbols (most of them external references) at most.

I've been running binutils with this patch,

    (still applies to 2.20)

which changes the default size to 31 and adds some more intermediate
sizes. This improves memory usage a lot, at a small cost in running time
(if I had numbers, they're lost by now).



More information about the Glasgow-haskell-users mailing list