6.8.1 SpecConstr failures and stream fusion successes
Don Stewart
dons at galois.com
Wed Nov 28 12:23:41 EST 2007
duncan.coutts:
> On Tue, 2007-11-27 at 23:07 -0800, Stefan O'Rear wrote:
> > On Tue, Nov 27, 2007 at 10:23:40PM -0800, Don Stewart wrote:
> > > SO very little fix up of the Stream structures the library translated
> > > the list code into.. probably not good...and running this we find it has
> > > a space leak, and takes 5 times as long:
> > >
> > > ./C 27.58s user 1.11s system 99% cpu 28.878 total
> >
> > SpecConstr should not be able to change asymptotic space behavior one
> > way or the other. If not doing it introduces a leak, something has gone
> > terribly wrong.
>
> Perhaps Don can correct me, but I expect there isn't actually a leak,
> it's just that the code is allocating much much more memory in its inner
> loop. Stream fusion relies on SpecConstr for everything other that
That's right. My mail from last night explaining this was held up in the queue.
> simple flat stuff like map, filter, fold (the kind of stuff we had in
> bytestring before SpecConstr was implemented). Stream fusion relies on
> SpecConstr in the sense that without it stream fusion makes the code
> much worse.
Right, and in this case we have zipWith, which I think is the thing
that's not being cleaned up properly, without full SpecConstr.
-- Don
More information about the Cvs-ghc
mailing list