[GHC] #15304: Huge increase of compile time and memory use from 8.0.2 to 8.2.2 or 8.4.2
GHC
ghc-devs at haskell.org
Thu Jul 12 08:21:13 UTC 2018
#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
More information about the ghc-tickets
mailing list