
On Wed, Nov 27, 2002 at 03:55:54PM -0000, Simon Marlow wrote:
Those who experience long link times (longer than a few seconds), please reply with your
- platform / OS version - versions of relevent things (GHC, GCC, binutils). - time to link 'main = print "hello"'.
Platform: Debian unstable, with the Debian GHC package (maintained by Michael Weber, iirc) GHC version: 5.04 GCC version: 2.95.4 binutils: GNU ld version 2.13.90.0.10 20021010 Debian GNU/Linux For the runtime loader example, this is the thing which takes ages to link: ghc -package lang -optl-export-dynamic -fglasgow-exts -O2 -o TextFilter Main.o TextFilter.o TextFilterPluginAPI.o -ldl -lHSrts -lHSlang /usr/lib/ghc-5.04/HSbase.o /usr/lib/ghc-5.04/HSlang.o ../runtime_loader/libRuntimeLoader.a make 169.92s user 0.86s system 98% cpu 2:52.81 total Linking in a 'main = print "hello"' is normal: 15:13 exodus:~/bar % ghc Main.hs ghc Main.hs 3.44s user 0.23s system 78% cpu 4.677 total Here's the fun part: 15:18 exodus:~/bar % time ghc -package lang /usr/lib/ghc-5.04/HSbase.o /usr/lib/ghc-5.04/HSlang.o Main.hs ghc -package lang /usr/lib/ghc-5.04/HSbase.o /usr/lib/ghc-5.04/HSlang.o 1.42s user 0.34s system 105% cpu 1.666 total 15:30 exodus:~/bar % time ghc -optl-export-dynamic -package lang Main.hs ghc -optl-export-dynamic -package lang Main.hs 3.68s user 0.21s system 102% cpu 3.793 total 15:22 exodus:~/bar % time ghc -optl-export-dynamic -package lang /usr/lib/ghc-5.04/HSbase.o /usr/lib/ghc-5.04/HSlang.o Main.hs ghc -optl-export-dynamic -package lang /usr/lib/ghc-5.04/HSbase.o Main.hs 169.05s user 0.87s system 100% cpu 2:49.85 total I guess it looks like -optl-export-dynamic in conjunction with linking in the .o's is the killer. strace seems to indicate that ld isn't doing any syscalls when it's doing the -export-dynamic work; it just mmaps a huge wad of memory before starting, then it doesn't make a single syscall until it goes to write the final output. Presumably it's mmapping the .o's into memory to do the -export-dynamic magic.
Does starting up GHCi take a long time?
GHCI startup appears to be normal (a few seconds).
At least for me the culprit is -optl-export-dynamic ... I'm not
sure that this is in GHC's problem domain any more.
--
#ozone/algorithm