another wash compile problem

Simon Marlow simonmar at microsoft.com
Tue Aug 9 09:32:42 EDT 2005


On 06 July 2005 23:38, Frederik Eaton wrote:

>> When I compile WASH it takes forever for ghc to finish compiling
>> HTMLMonad98, and on my powerpc system with 151MB free RAM, gcc
>> crashes during the compile. Should some of the larger WASH modules
>> maybe be split into multiple files? I get the sense that ghc
>> compilation time/memory is super-linear in the size of the module
>> being compiled. 
> 
> I've now verified my earlier "ghc compilation complexity is
> super-linear" belief. I split up HTMLMonad98 into 10 files, and then
> split the 6th and largest, which consists of the following lines -
> 
> instance AdmitChildHEAD HTML
> instance AdmitChildFRAMESET HTML
> ...(2692 lines)
> instance AdmitChildLABEL ACRONYM
> instance AdmitChildBUTTON ACRONYM
> 
> into 14 files:
> 
> $ wc -l HTMLMonad98No6.hs
> 2696 HTMLMonad98No6.hs
> $ wc -l HTMLMonad98No6?.hs
>   200 HTMLMonad98No6a.hs
>   204 HTMLMonad98No6b.hs
>   204 HTMLMonad98No6c.hs
> ...
>  2748 total
> 
> Compiling a module which imports the 14 smaller modules takes much
> less time than compiling the monolithic module - it's almost 5 times
> faster (see below).

We've found the cause of this, and committed a fix.  The full
HTMLMonda98.hs now compiles in 27 seconds for me, without optimisation
(with 6.4 it is several minutes).  Let's hope the same issue is
affecting other compilations too :-)

Cheers,
	Simon


More information about the Libraries mailing list