[GHC] #10293: CallArity taking 20% of compile time
GHC
ghc-devs at haskell.org
Mon Apr 13 07:59:58 UTC 2015
#10293: CallArity taking 20% of compile time
-------------------------------------+-------------------------------------
Reporter: simonpj | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.10.1
Keywords: | Operating System: Unknown/Multiple
Architecture: | Type of failure: None/Unknown
Unknown/Multiple | Blocked By:
Test Case: | Related Tickets:
Blocking: |
Differential Revisions: |
-------------------------------------+-------------------------------------
The `CallArity` analysis can, apparently, take 20% of compile time. That's
a lot for one analysis that is on by default with `-O`.
Michael Terepeta writes: Out of curiosity I had a look at compiling
haskell-src-exts since that takes quite a while. I've used ghc HEAD and
7.8.4 (both built with BuildFlavour=prof & bootstrapped with a standard
ghc 7.8.4) and it's interesting -- the current HEAD takes quite a bit
longer and allocates way more than 7.8.4. One of the main things that
stand out is the CallArity analysis (which IIRC was not there in 7.8.4).
So unless I messed something up with measuring, the analysis seem to be
pretty expensive.
HEAD
{{{
Sun Apr 12 15:52 2015 Time and Allocation Profiling Report
(Final)
ghc +RTS -p -RTS [...]
total time = 147.84 secs (147841 ticks @ 1000 us, 1
processor)
total alloc = 172,378,600,408 bytes (excludes profiling
overheads)
COST CENTRE MODULE %time %alloc
SimplTopBinds SimplCore 32.4 28.8
CallArity SimplCore 18.4 25.6
lintAnnots CoreLint 4.5 4.6
CoreTidy HscMain 4.5 5.1
pprNativeCode AsmCodeGen 3.2 3.4
OccAnal SimplCore 3.2 3.1
occAnalBind.assoc OccurAnal 2.6 2.5
StgCmm HscMain 2.3 1.9
Simplify SimplCore 2.1 0.2
RegAlloc AsmCodeGen 2.1 2.4
FloatOutwards SimplCore 2.0 1.6
regLiveness AsmCodeGen 1.9 1.9
tc_rn_src_decls TcRnDriver 1.8 1.3
sink CmmPipeline 1.7 1.5
NewStranal SimplCore 1.3 1.5
genMachCode AsmCodeGen 1.1 1.0
layoutStack CmmPipeline 1.0 1.0
}}}
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
}}}
GHC 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
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10293>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list