[GHC] #7258: Compiling DynFlags is jolly slow

GHC ghc-devs at haskell.org
Thu Oct 26 07:36:42 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 tdammers):

 Updated performance graph:
 https://ghc.haskell.org/trac/ghc/attachment/ticket/7258/ghc-large-record-
 types-optimized.png (this one uses -O, not -O2)

 Key observation: read, read-appl and show "explode" while all the other
 examples, including getline-appl and getline, behave properly.

 A sample profile like the one for 400-field read, shows that the
 bottleneck is no longer ASM output or register allocation anymore once -O
 is involved:
 {{{
         Thu Oct 26 01:25 2017 Time and Allocation Profiling Report
 (Final)

            ghc-stage2 +RTS -p -h -RTS -B/home/tobias/well-
 typed/devel/ghc/inplace/lib -B/home/tobias/well-
 typed/devel/ghc/inplace/lib -O -fforce-recomp -c examples/t-400-read.hs

         total time  =      128.62 secs   (128624 ticks @ 1000 us, 1
 processor)
         total alloc = 37,659,351,320 bytes  (excludes profiling overheads)

 COST CENTRE     MODULE      SRC
 %time %alloc

 sink            CmmPipeline compiler/cmm/CmmPipeline.hs:(104,13)-(105,59)
 77.8   23.6
 SimplTopBinds   SimplCore   compiler/simplCore/SimplCore.hs:761:39-74
 9.6   30.0
 FloatOutwards   SimplCore   compiler/simplCore/SimplCore.hs:471:40-66
 3.0   10.4
 RegAlloc-linear AsmCodeGen
 compiler/nativeGen/AsmCodeGen.hs:(658,27)-(660,55)    1.6    5.0
 OccAnal         SimplCore
 compiler/simplCore/SimplCore.hs:(739,22)-(740,67)     1.1    4.2
 pprNativeCode   AsmCodeGen
 compiler/nativeGen/AsmCodeGen.hs:(529,37)-(530,65)    1.0    4.7
 NewStranal      SimplCore   compiler/simplCore/SimplCore.hs:480:40-63
 0.9    4.2
 CoreTidy        HscMain     compiler/main/HscMain.hs:1253:27-67
 0.7    2.9
 StgCmm          HscMain     compiler/main/HscMain.hs:(1426,13)-(1427,62)
 0.6    1.9
 regLiveness     AsmCodeGen
 compiler/nativeGen/AsmCodeGen.hs:(591,17)-(593,52)    0.5    1.4
 genMachCode     AsmCodeGen
 compiler/nativeGen/AsmCodeGen.hs:(580,17)-(582,62)    0.4    1.3
 NativeCodeGen   CodeOutput  compiler/main/CodeOutput.hs:171:18-78
 0.4    1.6
 CommonSubExpr   SimplCore   compiler/simplCore/SimplCore.hs:462:40-56
 0.2    1.1
 deSugar         HscMain     compiler/main/HscMain.hs:511:7-44
 0.2    1.1
 }}}

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


More information about the ghc-tickets mailing list