[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
Tue Jul 10 14:25:30 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 simonpj):

 Here's `-dshow-passes` with HEAD
 {{{
 simonpj at cam-05-unx:~/tmp/cl3$ ~/5builds/HEAD-5/inplace/bin/ghc-stage2 -c
 -dshow-passes src/Algebra/Geometric/Cl3.hs -O2
 Glasgow Haskell Compiler, Version 8.7.20180710, stage 2 booted by GHC
 version 8.2.2
 Using binary package database:
 /home/simonpj/5builds/HEAD-5/inplace/lib/package.conf.d/package.cache
 Using binary package database:
 /home/simonpj/.ghc/x86_64-linux-8.7.20180710/package.conf.d/package.cache
 package flags []
 loading package database
 /home/simonpj/5builds/HEAD-5/inplace/lib/package.conf.d
 loading package database
 /home/simonpj/.ghc/x86_64-linux-8.7.20180710/package.conf.d
 wired-in package ghc-prim mapped to ghc-prim-0.5.3
 wired-in package integer-gmp mapped to integer-gmp-1.0.2.0
 wired-in package base mapped to base-4.12.0.0
 wired-in package rts mapped to rts
 wired-in package template-haskell mapped to template-haskell-2.14.0.0
 wired-in package ghc mapped to ghc-8.7
 *** Checking old interface for Algebra.Geometric.Cl3 (use -ddump-hi-diffs
 for more details):
 *** Parser [Algebra.Geometric.Cl3]:
 !!! Parser [Algebra.Geometric.Cl3]: finished in 281.59 milliseconds,
 allocated 124.657 megabytes
 *** Renamer/typechecker [Algebra.Geometric.Cl3]:
 !!! Renamer/typechecker [Algebra.Geometric.Cl3]: finished in 1729.18
 milliseconds, allocated 582.499 megabytes
 *** Desugar [Algebra.Geometric.Cl3]:
 Result size of Desugar (before optimization)
   = {terms: 46,524, types: 55,087, coercions: 2,210, joins: 0/9,539}
 Result size of Desugar (after optimization)
   = {terms: 26,825, types: 34,697, coercions: 4,390, joins: 1/660}
 !!! Desugar [Algebra.Geometric.Cl3]: finished in 463.17 milliseconds,
 allocated 198.217 megabytes
 *** Simplifier [Algebra.Geometric.Cl3]:
 Result size of Simplifier iteration=1
   = {terms: 29,453, types: 35,248, coercions: 7,271, joins: 1/982}
 Result size of Simplifier iteration=2
   = {terms: 26,430, types: 32,412, coercions: 5,036, joins: 1/207}
 Result size of Simplifier iteration=3
   = {terms: 26,370, types: 32,315, coercions: 4,924, joins: 1/198}
 Result size of Simplifier
   = {terms: 26,370, types: 32,315, coercions: 4,924, joins: 1/198}
 !!! Simplifier [Algebra.Geometric.Cl3]: finished in 1478.89 milliseconds,
 allocated 532.541 megabytes
 *** Specialise [Algebra.Geometric.Cl3]:
 Result size of Specialise
   = {terms: 27,077, types: 33,084, coercions: 4,924, joins: 1/226}
 !!! Specialise [Algebra.Geometric.Cl3]: finished in 34.41 milliseconds,
 allocated 20.874 megabytes
 *** Float out(FOS {Lam = Just 0,
                    Consts = True,
                    OverSatApps = False}) [Algebra.Geometric.Cl3]:
 Result size of Float out(FOS {Lam = Just 0,
                               Consts = True,
                               OverSatApps = False})
   = {terms: 29,888, types: 35,057, coercions: 4,924, joins: 1/217}
 !!! Float out(FOS {Lam = Just 0,
                    Consts = True,
                    OverSatApps = False}) [Algebra.Geometric.Cl3]: finished
 in 303.86 milliseconds, allocated 133.719 megabytes
 *** Simplifier [Algebra.Geometric.Cl3]:
 Result size of Simplifier iteration=1
   = {terms: 109,632,
      types: 50,922,
      coercions: 4,826,
      joins: 183/7,875}
 Result size of Simplifier iteration=2
   = {terms: 93,026,
      types: 52,819,
      coercions: 4,899,
      joins: 185/1,646}
 Result size of Simplifier iteration=3
   = {terms: 135,959,
      types: 55,173,
      coercions: 4,892,
      joins: 99/2,772}
 Result size of Simplifier iteration=4
   = {terms: 131,354, types: 52,485, coercions: 4,892, joins: 53/529}
 Result size of Simplifier
   = {terms: 131,354, types: 52,485, coercions: 4,892, joins: 53/529}
 !!! Simplifier [Algebra.Geometric.Cl3]: finished in 4415.46 milliseconds,
 allocated 1573.215 megabytes
 *** Simplifier [Algebra.Geometric.Cl3]:
 Result size of Simplifier iteration=1
   = {terms: 130,205, types: 52,159, coercions: 4,892, joins: 37/519}
 Result size of Simplifier iteration=2
   = {terms: 128,591, types: 51,440, coercions: 4,892, joins: 37/513}
 Result size of Simplifier
   = {terms: 128,591, types: 51,440, coercions: 4,892, joins: 37/513}
 !!! Simplifier [Algebra.Geometric.Cl3]: finished in 3285.00 milliseconds,
 allocated 1248.401 megabytes
 *** Simplifier [Algebra.Geometric.Cl3]:
 Result size of Simplifier iteration=1
   = {terms: 129,119, types: 51,615, coercions: 4,892, joins: 37/538}
 Result size of Simplifier iteration=2
   = {terms: 129,068, types: 51,555, coercions: 4,892, joins: 37/533}
 Result size of Simplifier
   = {terms: 129,068, types: 51,555, coercions: 4,892, joins: 37/533}
 !!! Simplifier [Algebra.Geometric.Cl3]: finished in 3415.70 milliseconds,
 allocated 1218.423 megabytes
 *** Float inwards [Algebra.Geometric.Cl3]:
 Result size of Float inwards
   = {terms: 129,068, types: 51,555, coercions: 4,892, joins: 37/533}
 !!! Float inwards [Algebra.Geometric.Cl3]: finished in 218.06
 milliseconds, allocated 143.267 megabytes
 *** Called arity analysis [Algebra.Geometric.Cl3]:
 Result size of Called arity analysis
   = {terms: 129,068, types: 51,555, coercions: 4,892, joins: 37/533}
 !!! Called arity analysis [Algebra.Geometric.Cl3]: finished in 160.66
 milliseconds, allocated 86.793 megabytes
 *** Simplifier [Algebra.Geometric.Cl3]:
 Result size of Simplifier
   = {terms: 129,068, types: 51,555, coercions: 4,892, joins: 37/533}
 !!! Simplifier [Algebra.Geometric.Cl3]: finished in 943.43 milliseconds,
 allocated 405.961 megabytes
 *** Demand analysis [Algebra.Geometric.Cl3]:
 Result size of Demand analysis
   = {terms: 129,068, types: 51,555, coercions: 4,892, joins: 37/533}
 !!! Demand analysis [Algebra.Geometric.Cl3]: finished in 1513.03
 milliseconds, allocated 552.224 megabytes
 *** Worker Wrapper binds [Algebra.Geometric.Cl3]:
 Result size of Worker Wrapper binds
   = {terms: 130,487, types: 54,247, coercions: 4,892, joins: 38/701}
 !!! Worker Wrapper binds [Algebra.Geometric.Cl3]: finished in 36.37
 milliseconds, allocated 10.774 megabytes
 *** Simplifier [Algebra.Geometric.Cl3]:
 Result size of Simplifier iteration=1
   = {terms: 143,685,
      types: 58,766,
      coercions: 4,815,
      joins: 96/1,750}
 Result size of Simplifier iteration=2
   = {terms: 175,579,
      types: 63,298,
      coercions: 4,815,
      joins: 173/1,293}
   C-c C-c*** Deleting temp files:
 *** Deleting temp dirs:
 }}}
 I had to stop it with ctrl-C

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15304#comment:9>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list