
#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): simonpj: I've added two examples that use IO. After a bit of work I managed to make a big improvement on `x2n1`: {{{ -------------------------------------------------------------------------------- Program Size Allocs Runtime Elapsed TotalMem -------------------------------------------------------------------------------- bspt -0.1% +0.1% 0.007 0.007 0.0% cacheprof -0.1% +0.1% +28.4% +28.4% +0.9% grep -0.1% -0.2% 0.000 0.000 0.0% maillist -0.1% -0.3% 0.053 0.053 0.0% hpg -0.1% -0.4% 0.205 0.205 0.0% pic -0.1% -0.6% 0.007 0.007 0.0% compress2 +0.2% -0.9% 0.196 0.196 -19.2% infer -0.1% -1.2% 0.069 0.069 0.0% sphere -0.1% -1.7% 0.049 0.049 0.0% solid -0.1% -6.6% 0.127 0.169 0.0% x2n1 -0.1% -84.7% 0.006 0.006 0.0% -------------------------------------------------------------------------------- Min -0.1% -84.7% -37.7% -35.7% -19.2% Max +0.2% +0.1% +34.3% +34.2% +0.9% Geometric Mean -0.1% -1.9% -2.6% -1.3% -0.2% }}} I wonder if this improvement justifies the added complexity to the compiler (about 400 lines of code added under `compiler/`). Right now I don't see any way to make the analysis/transformation more effective. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/1600#comment:73 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler