I did, though I didn't include the nofib details (I imagine it'll go out of date anyway) I also remembered to add the note about limiting recursive specialising that I'd had sitting in my repo for a while but had forgotten to commit
On Wed, May 15, 2013 at 11:03 PM, Simon Peyton-Jones <[email protected]>wrote: > Cool! Did you comment the change with a Note [Seed specialisation of > top-level bindings] inside SpecContr itself? (You could use more or less > the text below.) > > Simon > > | -----Original Message----- > | From: [email protected] [mailto:ghc-commits- > | [email protected]] On Behalf Of Amos Robinson > | Sent: 15 May 2013 13:47 > | To: [email protected] > | Subject: [commit: ghc] master: SpecConstr: seed specialisation of top- > | level bindings, as with letrecs. (8a58851) > | > | Repository : http://darcs.haskell.org/ghc.git/ > | > | On branch : master > | > | https://github.com/ghc/ghc/commit/8a58851150af11020140256bbd7c6d5359e020 > | ee > | > | >--------------------------------------------------------------- > | > | commit 8a58851150af11020140256bbd7c6d5359e020ee > | Author: Amos Robinson <[email protected]> > | Date: Wed May 15 22:15:56 2013 +1000 > | > | SpecConstr: seed specialisation of top-level bindings, as with > | letrecs. > | > | When specialising a top-level recursive group, if none of the > | binders > | are exported then we can start specialising based on the later calls > | to > | the functions. > | This is instead of creating specialisations based on the RHS of the > | bindings. > | The main benefit of this is that only specialisations that will > | actually > | be used are created. This saves quite a bit of memory when compiling > | stream-fusion and ForceSpecConstr sort of code. > | > | Nofib has an average allocation and runtime of -0.7%, maximum 2%. > | There are a few with significant decreases in allocation (10 - 20%) > | but, interestingly, those ones seem to have similar runtimes. > | One of these does have a significantly reduced total elapsed time > | though: -38%. > | > | On average the nofib compilation times are the same, but they do > | vary > | with s.d. of -4 to 4%. > | I think this is acceptable because of the fairly major code blowup > | fixes > | this has for fusion-style code. > | (In one example, a SpecConstr was previously producing 122,000 term > | size, > | now only produces 28,000 with the same object code) > | > | compiler/specialise/SpecConstr.lhs | 142 +++++++++++++++++++++++++++++- > | ------- > | 1 file changed, 113 insertions(+), 29 deletions(-) > | > | > | Diff suppressed because of size. To see it, use: > | > | git show 8a58851150af11020140256bbd7c6d5359e020ee > | > | _______________________________________________ > | ghc-commits mailing list > | [email protected] > | http://www.haskell.org/mailman/listinfo/ghc-commits > > _______________________________________________ > ghc-devs mailing list > [email protected] > http://www.haskell.org/mailman/listinfo/ghc-devs >
_______________________________________________ ghc-devs mailing list [email protected] http://www.haskell.org/mailman/listinfo/ghc-devs
