Re: [GHC] #1600: Optimisation: CPR the results of IO

#1600: Optimisation: CPR the results of IO -------------------------------------+------------------------------------- Reporter: simonmar | Owner: (none) Type: task | Status: new Priority: lowest | Milestone: Component: Compiler | Version: 6.6.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Runtime | Unknown/Multiple performance bug | Test Case: Blocked By: | Blocking: Related Tickets: #8598 | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by simonpj):
The main difference seems to come from this change...
Interesting! There are two changes in that commit: * Making data con wrappers have `ug_unsat_ok = unSaturatedOk`. I buy this. Can you try the effect of this change alone? It's entirely unrelated to nested-CPR. It would be good to isolate that perf bump from the perf changes due to nested CPR. * Making data con wrapper have `ug_boring_ok = boringCxtOk`. I'm not sure I buy this in full. In `Note [Inline data constructor wrappers aggresively]` there's a claim that we get better nested-CPR info. That's true if we have a polymorphic bang argument (e.g. `data T a = MkT !a`) but for a monomorphic one like `data S = MkS !Int` we'll unpack it. So I think the benefit comes only for polymorphic bangs. And there is a cost to aggressive inlining, so we don't want to do it gratuitously. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/1600#comment:65 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC