[GHC] #9630: compile-time performance regression (probably due to Generics)
GHC
ghc-devs at haskell.org
Tue Apr 14 23:35:23 UTC 2015
#9630: compile-time performance regression (probably due to Generics)
-------------------------------------+-------------------------------------
Reporter: hvr | Owner: simonpj
Type: bug | Status: new
Priority: high | Milestone: 7.12.1
Component: Compiler | Version: 7.9
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: Compile-time | Unknown/Multiple
performance bug | Test Case:
Blocked By: | Blocking:
Related Tickets: #9583 | Differential Revisions:
-------------------------------------+-------------------------------------
Comment (by goldfire):
Here is some relevant data (thanks to Michal Terepeta). These numbers were
gotten while compiling haskell-src-exts:
(I'm choosing the `-fno-call-arity` results here for better comparison
against 7.8, which lacked the `-fcall-arity` feature.)
{{{
** HEAD with -fno-call-arity
Sun Apr 12 18:16 2015 Time and Allocation Profiling Report
(Final)
ghc +RTS -p -RTS [...] -fno-call-arity
total time = 113.71 secs (113714 ticks @ 1000 us, 1
processor)
total alloc = 121,884,896,720 bytes (excludes profiling
overheads)
COST CENTRE MODULE %time %alloc
SimplTopBinds SimplCore 37.2 36.6
CoreTidy HscMain 6.0 7.3
lintAnnots CoreLint 5.8 6.5
pprNativeCode AsmCodeGen 4.1 4.8
OccAnal SimplCore 3.6 3.8
occAnalBind.assoc OccurAnal 2.9 3.2
StgCmm HscMain 2.9 2.6
RegAlloc AsmCodeGen 2.6 3.4
FloatOutwards SimplCore 2.6 2.3
regLiveness AsmCodeGen 2.5 2.8
tc_rn_src_decls TcRnDriver 2.4 1.9
Simplify SimplCore 2.4 0.3
sink CmmPipeline 2.1 2.2
NewStranal SimplCore 1.7 2.1
genMachCode AsmCodeGen 1.4 1.4
layoutStack CmmPipeline 1.4 1.4
NativeCodeGen CodeOutput 1.1 1.2
FloatInwards SimplCore 1.1 1.4
do_block Hoopl.Dataflow 1.0 0.6
Digraph.scc Digraph 0.8 1.3
}}}
{{{
** 7.8.4
Sun Apr 12 15:41 2015 Time and Allocation Profiling Report
(Final)
ghc +RTS -p -RTS [...]
total time = 93.11 secs (93112 ticks @ 1000 us, 1
processor)
total alloc = 103,135,975,120 bytes (excludes profiling
overheads)
COST CENTRE MODULE %time %alloc
SimplTopBinds SimplCore 38.5 37.4
pprNativeCode AsmCodeGen 6.2 7.2
StgCmm HscMain 3.9 4.2
RegAlloc AsmCodeGen 3.7 5.1
occAnalBind.assoc OccurAnal 3.3 3.6
OccAnal SimplCore 3.3 3.6
regLiveness AsmCodeGen 3.1 3.4
FloatOutwards SimplCore 2.9 2.4
sink CmmPipeline 2.8 2.8
Simplify SimplCore 2.6 0.3
tc_rn_src_decls TcRnDriver 2.4 2.1
genMachCode AsmCodeGen 1.9 2.0
NewStranal SimplCore 1.8 2.1
layoutStack CmmPipeline 1.8 1.8
Core2Core HscMain 1.3 1.2
deSugar HscMain 1.1 1.1
do_block Hoopl.Dataflow 1.1 0.7
CoreTidy HscMain 1.0 1.1
CorePrep HscMain 1.0 1.1
Digraph.scc Digraph 0.9 1.5
versioninfo MkIface 0.9 1.0
zonkEvBndr_zonkTcTypeToType TcHsSyn 0.6 1.4
}}}
HEAD with `-fno-specialise` and `-fno-call-arity`:
{{{
ghc +RTS -p -RTS [...] -fno-specialise -fno-call-arity
total time = 89.93 secs (89928 ticks @ 1000 us, 1 processor)
total alloc = 93,495,685,792 bytes (excludes profiling overheads)
COST CENTRE MODULE %time %alloc
SimplTopBinds SimplCore 38.7 38.6
pprNativeCode AsmCodeGen 5.1 5.9
StgCmm HscMain 3.7 3.3
occAnalBind.assoc OccurAnal 3.2 3.6
OccAnal SimplCore 3.2 3.6
tc_rn_src_decls TcRnDriver 3.1 2.5
RegAlloc AsmCodeGen 3.1 4.2
regLiveness AsmCodeGen 3.0 3.5
FloatOutwards SimplCore 2.7 2.4
sink CmmPipeline 2.6 2.7
Simplify SimplCore 2.5 0.1
NewStranal SimplCore 1.9 2.3
genMachCode AsmCodeGen 1.8 1.7
layoutStack CmmPipeline 1.6 1.7
NativeCodeGen CodeOutput 1.4 1.5
FloatInwards SimplCore 1.2 1.6
CoreTidy HscMain 1.2 1.2
deSugar HscMain 1.2 1.2
do_block Hoopl.Dataflow 1.1 0.7
CorePrep HscMain 1.0 1.1
versioninfo MkIface 0.9 1.0
Parser HscMain 0.9 1.2
Digraph.scc Digraph 0.9 1.5
canEvVar TcCanonical 0.7 1.0
}}}
And now with only `-fno-specialise`:
{{{
ghc +RTS -p -RTS [...] -fno-specialise
total time = 109.78 secs (109784 ticks @ 1000 us, 1 processor)
total alloc = 124,469,615,048 bytes (excludes profiling overheads)
COST CENTRE MODULE %time %alloc
SimplTopBinds SimplCore 35.4 32.4
CallArity SimplCore 13.4 20.7
pprNativeCode AsmCodeGen 4.1 4.5
OccAnal SimplCore 3.1 3.1
StgCmm HscMain 3.0 2.5
occAnalBind.assoc OccurAnal 3.0 3.1
RegAlloc AsmCodeGen 2.6 3.2
tc_rn_src_decls TcRnDriver 2.5 1.8
regLiveness AsmCodeGen 2.4 2.6
Simplify SimplCore 2.3 0.1
FloatOutwards SimplCore 2.3 1.8
sink CmmPipeline 2.2 2.0
genMachCode AsmCodeGen 1.5 1.3
NewStranal SimplCore 1.5 1.7
layoutStack CmmPipeline 1.3 1.3
NativeCodeGen CodeOutput 1.2 1.1
FloatInwards SimplCore 1.0 1.2
Digraph.scc Digraph 0.8 1.2
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9630#comment:12>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list