[GHC] #14944: Compile speed regression
GHC
ghc-devs at haskell.org
Wed Mar 21 00:38:14 UTC 2018
#14944: Compile speed regression
-------------------------------------+-------------------------------------
Reporter: br1 | Owner: dfeuer
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.4.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 dfeuer):
Yes, the size of the program changes quite a lot. The most notable thing
about this program is the sheer number of types, which is enormous in
every case, but varies quite a lot. In each case I give the result of
`CorePrep` from `Paper` (which always compiles reasonably quickly) along
with pertinent-looking information about `Main` (which takes a while).
=== 7.8.4
Paper:
{{{
{terms: 1,719, types: 4,049, coercions: 768}
}}}
Main:
{{{
Result size of Desugar (after optimization)
= {terms: 3,973, types: 630,023, coercions: 196}
...
Result size of Simplifier
= {terms: 3,384, types: 628,456, coercions: 5}
Result size of Specialise
= {terms: 4,785, types: 865,456, coercions: 5}
Result size of Float out(FOS {Lam = Just 0,
Consts = True,
PAPs = False})
= {terms: 6,373, types: 1,100,676, coercions: 5}
Result size of Simplifier iteration=1
= {terms: 8,674, types: 1,377,245, coercions: 211,797}
Result size of Simplifier iteration=2
= {terms: 4,051, types: 730,227, coercions: 84,460}
-- things go up and down a few times
Result size of Tidy Core
= {terms: 5,157, types: 1,104,496, coercions: 84,451}
}}}
=== 7.10.3
Paper:
{{{
Result size of CorePrep
= {terms: 1,736, types: 3,973, coercions: 778}
}}}
Main:
{{{
Result size of Desugar (after optimization)
= {terms: 3,973, types: 630,023, coercions: 196}
Result size of Specialise
= {terms: 12,088, types: 2,092,764, coercions: 392}
*** Float out(FOS {Lam = Just 0, Consts = True, OverSatApps = False}):
Result size of Float out(FOS {Lam = Just 0,
Consts = True,
OverSatApps = False})
= {terms: 13,674, types: 2,327,982, coercions: 392}
Result size of Simplifier iteration=1
= {terms: 14,824, types: 2,416,989, coercions: 371,022}
Result size of Simplifier iteration=2
= {terms: 10,101, types: 2,096,313, coercions: 321,082}
Result size of Simplifier iteration=1
= {terms: 12,295, types: 2,650,706, coercions: 321,081}
... nothing much changes for a long time
-- Sudden size drop in core tidy
Result size of Tidy Core
= {terms: 5,146, types: 1,104,452, coercions: 84,448}
}}}
This comment is getting long; I'll continue in the next one.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14944#comment:6>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list