[GHC] #13253: Exponential compilation time with RWST & ReaderT stack with `-02`
GHC
ghc-devs at haskell.org
Tue Jan 16 15:33:34 UTC 2018
#13253: Exponential compilation time with RWST & ReaderT stack with `-02`
-------------------------------------+-------------------------------------
Reporter: phadej | Owner: dfeuer
Type: bug | Status: new
Priority: normal | Milestone: 8.4.1
Component: Compiler | Version: 8.0.1
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: Compile-time | Unknown/Multiple
performance bug | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by simonpj):
This patch
{{{
modified compiler/simplCore/SimplUtils.hs
@@ -1255,7 +1255,8 @@ postInlineUnconditionally env top_lvl bndr occ_info
rhs
-- in allocation if you miss this out
OneOcc { occ_in_lam = in_lam, occ_int_cxt = int_cxt }
-- OneOcc => no code-duplication issue
- -> smallEnoughToInline dflags unfolding -- Small enough
to dup
+ -> not (isJoinId bndr)
+ && smallEnoughToInline dflags unfolding -- Small enough to
dup
-- ToDo: consider discount on smallEnoughToInline
if int_cxt is true
--
-- NB: Do NOT inline arbitrarily big things, even
if one_br is True
}}}
makes a big difference.
It makes my reproducer work in linear time.
Nofib says
{{{
Program Size Allocs Runtime Elapsed TotalMem
--------------------------------------------------------------------------------
fibheaps -2.6% +1.1% 0.033 0.033 0.0%
gamteb -2.3% +4.0% 0.062 0.062 0.0%
ida -2.8% +2.0% 0.107 0.107 +33.3%
mate -2.3% -19.6% -5.8% -5.8% 0.0%
para -2.8% +0.7% -2.1% -2.4% 0.0%
--------------------------------------------------------------------------------
Min -4.9% -19.6% -8.6% -8.6% 0.0%
Max -1.5% +4.0% +3.5% +3.4% +33.3%
Geometric Mean -2.5% -0.1% -0.5% -0.5% +0.5%
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13253#comment:24>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list