<div dir="ltr">I did, though I didn&#39;t include the nofib details (I imagine it&#39;ll go out of date anyway)<div>I also remembered to add the note about limiting recursive specialising that I&#39;d had sitting in my repo for a while but had forgotten to commit</div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, May 15, 2013 at 11:03 PM, Simon Peyton-Jones <span dir="ltr">&lt;<a href="mailto:simonpj@microsoft.com" target="_blank">simonpj@microsoft.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">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.)<br>

<br>
Simon<br>
<div><div class="h5"><br>
| -----Original Message-----<br>
| From: <a href="mailto:ghc-commits-bounces@haskell.org">ghc-commits-bounces@haskell.org</a> [mailto:<a href="mailto:ghc-commits-">ghc-commits-</a><br>
| <a href="mailto:bounces@haskell.org">bounces@haskell.org</a>] On Behalf Of Amos Robinson<br>
| Sent: 15 May 2013 13:47<br>
| To: <a href="mailto:ghc-commits@haskell.org">ghc-commits@haskell.org</a><br>
| Subject: [commit: ghc] master: SpecConstr: seed specialisation of top-<br>
| level bindings, as with letrecs. (8a58851)<br>
|<br>
| Repository : <a href="http://darcs.haskell.org/ghc.git/" target="_blank">http://darcs.haskell.org/ghc.git/</a><br>
|<br>
| On branch  : master<br>
|<br>
| <a href="https://github.com/ghc/ghc/commit/8a58851150af11020140256bbd7c6d5359e020" target="_blank">https://github.com/ghc/ghc/commit/8a58851150af11020140256bbd7c6d5359e020</a><br>
| ee<br>
|<br>
| &gt;---------------------------------------------------------------<br>
|<br>
| commit 8a58851150af11020140256bbd7c6d5359e020ee<br>
| Author: Amos Robinson &lt;<a href="mailto:amos.robinson@gmail.com">amos.robinson@gmail.com</a>&gt;<br>
| Date:   Wed May 15 22:15:56 2013 +1000<br>
|<br>
|     SpecConstr: seed specialisation of top-level bindings, as with<br>
| letrecs.<br>
|<br>
|     When specialising a top-level recursive group, if none of the<br>
| binders<br>
|     are exported then we can start specialising based on the later calls<br>
| to<br>
|     the functions.<br>
|     This is instead of creating specialisations based on the RHS of the<br>
|     bindings.<br>
|     The main benefit of this is that only specialisations that will<br>
| actually<br>
|     be used are created. This saves quite a bit of memory when compiling<br>
|     stream-fusion and ForceSpecConstr sort of code.<br>
|<br>
|     Nofib has an average allocation and runtime of -0.7%, maximum 2%.<br>
|     There are a few with significant decreases in allocation (10 - 20%)<br>
|     but, interestingly, those ones seem to have similar runtimes.<br>
|     One of these does have a significantly reduced total elapsed time<br>
|     though: -38%.<br>
|<br>
|     On average the nofib compilation times are the same, but they do<br>
| vary<br>
|     with s.d. of -4 to 4%.<br>
|     I think this is acceptable because of the fairly major code blowup<br>
| fixes<br>
|     this has for fusion-style code.<br>
|     (In one example, a SpecConstr was previously producing 122,000 term<br>
| size,<br>
|     now only produces 28,000 with the same object code)<br>
|<br>
|  compiler/specialise/SpecConstr.lhs | 142 +++++++++++++++++++++++++++++-<br>
| -------<br>
|  1 file changed, 113 insertions(+), 29 deletions(-)<br>
|<br>
|<br>
| Diff suppressed because of size. To see it, use:<br>
|<br>
|     git show 8a58851150af11020140256bbd7c6d5359e020ee<br>
|<br>
| _______________________________________________<br>
| ghc-commits mailing list<br>
| <a href="mailto:ghc-commits@haskell.org">ghc-commits@haskell.org</a><br>
| <a href="http://www.haskell.org/mailman/listinfo/ghc-commits" target="_blank">http://www.haskell.org/mailman/listinfo/ghc-commits</a><br>
<br>
</div></div>_______________________________________________<br>
ghc-devs mailing list<br>
<a href="mailto:ghc-devs@haskell.org">ghc-devs@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/ghc-devs" target="_blank">http://www.haskell.org/mailman/listinfo/ghc-devs</a><br>
</blockquote></div><br></div>