diff options
author | alexbiehl <alex.biehl@gmail.com> | 2017-11-02 11:47:32 -0400 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2017-11-02 11:47:33 -0400 |
commit | 44406d3ffd0a6a8bc706ca5492632ff4122ce8f9 (patch) | |
tree | bf015312b2b99b7adfb504ff80960bb4f5a1a70b /compiler/nativeGen | |
parent | 29ae83374647e227d76acd896b89590fc15590d6 (diff) | |
download | haskell-wip/D4145.tar.gz |
CmmSink: Use a IntSet instead of a listwip/D4145
CmmProcs which have *lots* of local variables take a considerable
amount of time in CmmSink. This was noticed by @tdammers in #7258
while compiling files with large records (~200-400 fields).
Before:
```
Sun Oct 29 19:58 2017 Time and Allocation Profiling Report
(Final)
ghc-stage2 +RTS -p -RTS
-B/Users/alexbiehl/git/ghc/inplace/lib /Users/alexbiehl/Downloads/W2.hs
-fforce-recomp -O2
total time = 26.00 secs (25996 ticks @ 1000 us, 1
processor)
total alloc = 14,921,627,912 bytes (excludes profiling
overheads)
COST CENTRE MODULE SRC
%time %alloc
sink CmmPipeline
compiler/cmm/CmmPipeline.hs:(104,13)-(105,59) 55.7 15.9
SimplTopBinds SimplCore compiler/simplCore/SimplCore.hs:761:39-74
19.5 30.6
FloatOutwards SimplCore compiler/simplCore/SimplCore.hs:471:40-66
4.2 9.0
RegAlloc-linear AsmCodeGen
compiler/nativeGen/AsmCodeGen.hs:(658,27)-(660,55) 4.0 11.1
pprNativeCode AsmCodeGen
compiler/nativeGen/AsmCodeGen.hs:(529,37)-(530,65) 2.8 6.3
NewStranal SimplCore compiler/simplCore/SimplCore.hs:480:40-63
1.6 3.7
OccAnal SimplCore
compiler/simplCore/SimplCore.hs:(739,22)-(740,67) 1.5 3.5
StgCmm HscMain
compiler/main/HscMain.hs:(1426,13)-(1427,62) 1.2 2.4
regLiveness AsmCodeGen
compiler/nativeGen/AsmCodeGen.hs:(591,17)-(593,52) 1.2 1.9
genMachCode AsmCodeGen
compiler/nativeGen/AsmCodeGen.hs:(580,17)-(582,62) 0.9 1.8
NativeCodeGen CodeOutput compiler/main/CodeOutput.hs:171:18-78
0.9 2.1
CoreTidy HscMain compiler/main/HscMain.hs:1253:27-67
0.8 1.9
```
After:
```
Sun Oct 29 19:18 2017 Time and Allocation Profiling Report
(Final)
ghc-stage2 +RTS -p -RTS
-B/Users/alexbiehl/git/ghc/inplace/lib /Users/alexbiehl/Downloads/W2.hs
-fforce-recomp -O2
total time = 13.31 secs (13307 ticks @ 1000 us, 1
processor)
total alloc = 15,772,184,488 bytes (excludes profiling
overheads)
COST CENTRE MODULE SRC
%time %alloc
SimplTopBinds SimplCore
compiler/simplCore/SimplCore.hs:761:39-74 38.3 29.0
sink CmmPipeline
compiler/cmm/CmmPipeline.hs:(104,13)-(105,59) 13.2 20.3
RegAlloc-linear AsmCodeGen
compiler/nativeGen/AsmCodeGen.hs:(658,27)-(660,55) 8.3 10.5
FloatOutwards SimplCore
compiler/simplCore/SimplCore.hs:471:40-66 8.1 8.5
pprNativeCode AsmCodeGen
compiler/nativeGen/AsmCodeGen.hs:(529,37)-(530,65) 5.4 5.9
NewStranal SimplCore
compiler/simplCore/SimplCore.hs:480:40-63 3.1 3.5
OccAnal SimplCore
compiler/simplCore/SimplCore.hs:(739,22)-(740,67) 2.9 3.3
StgCmm HscMain
compiler/main/HscMain.hs:(1426,13)-(1427,62) 2.3 2.3
regLiveness AsmCodeGen
compiler/nativeGen/AsmCodeGen.hs:(591,17)-(593,52) 2.1 1.8
NativeCodeGen CodeOutput compiler/main/CodeOutput.hs:171:18-78
1.7 2.0
genMachCode AsmCodeGen
compiler/nativeGen/AsmCodeGen.hs:(580,17)-(582,62) 1.6 1.7
CoreTidy HscMain compiler/main/HscMain.hs:1253:27-67
1.4 1.8
foldNodesBwdOO Hoopl.Dataflow
compiler/cmm/Hoopl/Dataflow.hs:(397,1)-(403,17) 1.1 0.8
```
Reviewers: austin, bgamari, simonmar
Subscribers: duog, rwbarton, thomie, tdammers
GHC Trac Issues: #7258
Differential Revision: https://phabricator.haskell.org/D4145
Diffstat (limited to 'compiler/nativeGen')
0 files changed, 0 insertions, 0 deletions