Build time regressions

Reid Barton rwbarton at gmail.com
Wed Oct 1 13:30:38 UTC 2014


On Tue, Sep 30, 2014 at 7:44 PM, John Lato <jwlato at gmail.com> wrote:

> Hi Edward,
>
> This is possibly unrelated, but the setup seems almost identical to a very
> similar problem we had in some code, i.e. very long compile times (6+
> minutes for 1 module) and excessive memory usage when compiling generic
> serialization instances for some data structures.
>
> In our case, I also thought that INLINE functions were the cause of the
> problem, but it turns out they were not.  We had a nested data structure,
> e.g.
>
> > data Foo { fooBar :: !Bar, ... }
>
> with Bar very large (~150 records).
>
> even when we explicitly NOINLINE'd the function that serialized Bar, GHC
> still created a very large helper function of the form:
>
> > serialize_foo :: Int# -> Int#  -> ...
>
> where the arguments were the unboxed fields of the Bar structure, along
> with the other fields within Foo.
>

This sounds very much like the bug Richard fixed in
https://ghc.haskell.org/trac/ghc/ticket/9233. (See "g/F.hs" from my
"minimized.tar.gz".) If so then I think it is actually caused simply by
creating the worker function, and doesn't have to do with unpacking, only
the strictness of the Bar field.

Regards,
Reid Barton
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/ghc-devs/attachments/20141001/f473603f/attachment.html>


More information about the ghc-devs mailing list