
#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 akio): == mandel and gcd The main difference seems to come from [https://github.com/takano- akio/ghc/commit/1edc47406dd2f5da9925978b01a1724028bd576e this change], which makes `integer-gmp` allocate less by inlining wrappers for `S#`, `Jp#` etc. Actually this small change seems to be responsible for the much of the allocation improvement in this branch: {{{ gcd +0.8% -21.4% 0.039 0.040 0.0% integer +1.1% -1.5% +5.0% +5.1% 0.0% mandel +1.1% -24.4% 0.070 0.070 0.0% -------------------------------------------------------------------------------- Min -0.0% -24.4% -38.7% -38.5% 0.0% Max +1.1% 0.0% +13.7% +13.6% +14.4% Geometric Mean +0.3% -0.6% -6.9% -6.9% +0.1% }}} Perhaps I should try go get this change merged, separately from the rest of the nested CPR work. == Binary size increase I had a brief look at `nofib/real/fluid/Jcb_method.hs`, which showed a +60% increase in the binary size, but I wasn't able to figure out why the change happened. !SpecConstr now seems to duplicate a big function, but I don't know what caused this (yet). == Wiki page I think the content under wiki:NestedCPR is mostly valid, because all I have done so far is essentially just to rebase nomeata's branch on top of the join-point commit. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/1600#comment:64 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler