[GHC] #7258: Compiling DynFlags is jolly slow

GHC ghc-devs at haskell.org
Fri Nov 3 00:15:59 UTC 2017


#7258: Compiling DynFlags is jolly slow
-------------------------------------+-------------------------------------
        Reporter:  simonpj           |                Owner:  simonpj
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  7.6.1
      Resolution:                    |             Keywords:  deriving-perf
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Compile-time      |  Unknown/Multiple
  performance bug                    |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by Ben Gamari <ben@…>):

 In [changeset:"43537568579a63cb6b8d70b4815d76c46bb9a692/ghc" 4353756/ghc]:
 {{{
 #!CommitTicketReference repository="ghc"
 revision="43537568579a63cb6b8d70b4815d76c46bb9a692"
 CmmSink: Use a IntSet instead of a list

 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

 Reviewed By: bgamari

 Subscribers: duog, rwbarton, thomie, tdammers

 GHC Trac Issues: #7258

 Differential Revision: https://phabricator.haskell.org/D4145
 }}}

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/7258#comment:79>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list