
#15304: Huge increase of compile time and memory use from 8.0.2 to 8.2.2 or 8.4.2 -------------------------------------+------------------------------------- Reporter: NathanWaivio | Owner: tdammers Type: bug | Status: new Priority: high | Milestone: 8.6.1 Component: Compiler | Version: 8.4.2 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: x86_64 Type of failure: Compile-time | (amd64) performance bug | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by tdammers): This is very useful. The reduced `Cl3.hs` with all `Floating` methods except `exp` and `log` removed gives a much cleaner result. Looking at `-ddump-rule-firings` output, here's counters of how often each rule fired on 8.0.2 and 8.4.3: {{{ rule | 8.0 8.4 --------------------------+------------ *## | 127 44 +## | 26 372 ^2/Integer | 55 55 Class op - | 419 417 Class op / | 15 8 Class op * | 1698 1693 Class op ** | 3 2 Class op + | 737 734 Class op abs | 5 5 Class op atan2 | 1 1 Class op cos | 7 5 Class op cosh | 3 2 Class op exp | 14 10 Class op fromInteger | 13 8 Class op fromRational | 4 2 Class op log | 20 14 Class op log1p | 6 4 Class op negate | 109 106 Class op $p1Floating | 25 16 Class op $p1Fractional | 20 12 Class op pi | 1 1 Class op recip | 4 3 Class op sin | 7 5 Class op sinh | 3 2 Class op sqrt | 14 14 doubleFromInteger | 9 7 SC:$clog0 | 6 0 SC:$w$catan20 | 1 0 }}} So it looks like a change to the way `SpecConstr`s are handled is preventing either specializations, or `RULES` that follow from them. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/15304#comment:13 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler