
#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@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