
#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