Changes between Version 7 and Version 8 of NestedCPR


Ignore:
Timestamp:
Dec 18, 2013 4:41:37 PM (20 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 ===