
#8655: Evaluate know-to-terminate-soon thunks -------------------------------------+------------------------------------ Reporter: nomeata | Owner: nomeata Type: task | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.6.3 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Unknown/Multiple Type of failure: None/Unknown | Difficulty: Unknown Test Case: | Blocked By: Blocking: | Related Tickets: -------------------------------------+------------------------------------ Comment (by nomeata): A first attempt looks promising: {{{ -------------------------------------------------------------------------------- Program Size Allocs Runtime Elapsed TotalMem -------------------------------------------------------------------------------- atom +0.0% -0.0% +0.7% +0.7% +0.0% binary-trees +0.0% +0.0% -0.4% -0.4% +0.0% cacheprof +0.0% +0.0% -0.8% +0.0% +0.0% circsim +0.0% +0.0% -2.7% -2.7% +0.0% constraints +0.0% +0.0% -1.3% -1.3% +0.0% cryptarithm1 +0.0% +0.0% -1.5% -1.0% +0.0% fannkuch-redux +0.0% +0.0% +0.1% +0.2% +0.0% fasta +0.0% +0.0% -0.6% +0.6% +0.0% hidden +0.0% +0.0% +0.0% +0.7% +0.0% integer +0.0% +0.0% +0.2% +0.2% +0.0% k-nucleotide +0.0% +0.0% -1.9% -1.9% +0.0% lcss +0.0% +0.0% -1.6% -0.8% +0.0% n-body +0.0% +0.0% -1.1% -1.1% +0.0% para +0.0% +0.0% -1.9% -2.8% +0.0% pidigits +0.0% +0.0% +0.0% -1.1% +0.0% power +0.0% +0.0% -2.9% -2.9% +0.0% scs +0.0% +0.0% +0.0% +0.0% +0.0% spectral-norm +0.0% +0.0% +0.2% +0.2% +0.0% transform +0.0% +0.0% -1.8% -1.8% +0.0% wave4main +0.0% +0.0% -1.9% -1.0% +0.0% wheel-sieve1 +0.0% +0.0% +0.8% +0.8% +0.0% -------------------------------------------------------------------------------- Min -0.0% -0.1% -2.9% -2.9% -17.4% Max +0.0% +0.0% +0.8% +0.8% +0.0% Geometric Mean -0.0% -0.0% -0.9% -0.7% -0.2% }}} Such a speculative optimization cannot be expected to be a definite win, but I think the numbers are encouraging: No large increase and a detectable improvement in the mean. I put my code in `wip/cbv-conv-thunk`, which shares some patches with `wip /nested-cpr` that are not in master yet. Let’s see how that goes for a rebasing branch... -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8655#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler