[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