[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