Changes between Version 7 and Version 8 of NestedCPR


Ignore:
Timestamp:
Dec 18, 2013 4:41:37 PM (15 months ago)
Author:
nomeata
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • NestedCPR

    v7 v8  
    2222 * Use ticky-profiling to learn more about the effects of nested CPR. 
    2323 * Look at !DmdAnal-related [SLPJ-Tickets] and see which ones are affected by nested-cpr. 
    24  * Idea about join points: http://www.haskell.org/pipermail/ghc-devs/2013-December/003481.html 
     24 * Idea about join points:  
     25==== join points ==== 
     26 
     27CPR can kill join points. Idea to fix this, and possibly more general benefits: 
     28http://www.haskell.org/pipermail/ghc-devs/2013-December/003481.html; prototype in branch `wip/common-context`. 
     29 
     30 * On its own, improvements are present but very small: http://www.haskell.org/pipermail/ghc-devs/2013-December/003500.html 
     31 * Enabling CPR for sum types in non-top-level-bindings (which is currently disabled due to worries abut lost join points) yields mixed results (min -3.8%, mean -0.0%, max 3.4%). 
     32 * Enabling nested CPR in inside sum types also yields mixed, not very promising results (-6.9% / +0.0% / +11.3%). 
     33 
    2534 
    2635==== better-ho-cardinality ==== 
     
    7584it is important that both `paren` and `parens` are used more than once; if there is only one use-site, the problem disappears (which made it hard to find). Also, most other changes prevent the increase in allocations: Removing the `Monad` instance and turning its methods into regular functions; adding `NOINLINE` annotations to `paren` or `parens`; changing `foo2` to `ppp foo foo`; even removing the dead code that is the first line of the `mplus` function. 
    7685 
    77 I think I’ll leave it at this point, this is hopefully enough information for someone (likely SPJ) to know whats going on. 
     86Further investigation and aggresive patch-splitting shows that the arity change is causing the regression. Pushed everything but that patch to master, that patch now lives in `wip/exprArity`. 
    7887 
    7988=== Side tracks ===