
#1600: Optimisation: CPR the results of IO -------------------------------------+------------------------------------- Reporter: simonmar | Owner: Type: task | Status: new Priority: lowest | Milestone: 7.6.2 Component: Compiler | Version: 6.6.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Unknown/Multiple Type of failure: Runtime | Difficulty: Moderate (less performance bug | than a day) Test Case: | Blocked By: Blocking: | Related Tickets: -------------------------------------+------------------------------------- Comment (by nomeata): Run nofib the first time, mixed results: {{{ binary-trees -1.3% +0.6% +7.7% +7.5% +0.0% hidden -1.3% -0.5% -0.3% -0.5% +0.0% mandel -1.2% -9.2% 0.10 0.10 +0.0% nucleic2 -1.0% -2.6% 0.11 0.11 +0.0% reverse-complem -1.3% +4.9% 0.21 0.22 +0.0% -------------------------------------------------------------------------------- Min -1.4% -9.2% -6.3% -6.6% -4.5% Max -1.0% +4.9% +7.7% +7.5% +0.0% Geometric Mean -1.3% -0.0% +0.5% +0.6% -0.1% }}} The gain in mandel seems to come from a a few more unboxed results in `Data.Complex`, in particular the return types of `$w$sphase` and `$w$smagnitued` turns from `Double` to `Double#` (and likewise the `Float`-specializations). And why the new chance for that? Because `$fFloatingComplex` (which is a CAF for `D# 0.0`) and other constants are inlined (and thus no longer shared). Not sure why that part changed, and it seems that this is not related to ''nested''CPR... -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/1600#comment:24 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler