Changes between Version 8 and Version 9 of NestedCPR


Ignore:
Timestamp:
Jan 6, 2014 1:38:05 PM (19 months ago)
Author:
nomeata
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • NestedCPR

    v8 v9  
    1919 * Shouldn’t nested CPR help a lot with Complex-heavy code? Is there something in nofib?
    2020 * Try passing CPR information from the scrunitee to the pattern variables. For that: Reverse flow of analysis for complex scrunitees (for simple, we want the demand coming from the body, for complex, this is not so important.)
    21  * Why is `cacheprof` not deterministic? (→ #8611)
    2221 * Use ticky-profiling to learn more about the effects of nested CPR.
    2322 * Look at !DmdAnal-related [SLPJ-Tickets] and see which ones are affected by nested-cpr.
    24  * Idea about join points:
     23 * Do not destroy join points (see below).
     24
    2525==== join points ====
    2626
     
    3131 * 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%).
    3232 * Enabling nested CPR in inside sum types also yields mixed, not very promising results (-6.9% / +0.0% / +11.3%).
     33
     34Alternative: Detect join points during `dmdAnal` and make sure that their CPR info is not greater than that of the expression they are a join-point for.
    3335
    3436
     
    4446Baseline: 49832, `better-ho-cardinality`: 49968. Unfortunately, the changes to, for example, `GHC.Read` are not small, and probably mostly benign...
    4547
    46 Trying to minimize and isolate the problem. After some agressive code deleting, this is where I ended up:
     48Trying to minimize and isolate the problem. After some aggressive code deleting, this is where I ended up:
    4749{{{
    4850#!haskell
     
    8991
    9092 * Should `runSTRep` be inlined (see ticket:1600#comment:34)?
     93 * Can we use `Terminates` CPR information to eagerly evaluate thunks? Possibly, but still trying to construct an example.
     94 * Why is `cacheprof` not deterministic? (→ #8611)