[GHC] #7258: Compiling DynFlags is jolly slow

GHC ghc-devs at haskell.org
Wed Nov 1 14:33:02 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):

 Some better data extraction code for profiles generated earlier yields the
 above graphs. All of these were generated using the optimization as
 implemented in D4145 (using a UniqSet instead of a list). Observations:

 - The number of terms in generated Core scales in a perfectly linear
 fashion for all examples.
 - The size of the generated Core in lines-of-code, however, scales non-
 linearly, which tells us that the size of individual terms grows with
 input size. This behavior seems to be identical between all 4 examples
 though, so it does not explain the extreme performance differences.
 - Somewhere between Core and STG, the `show` and `read` examples misbehave
 more badly than the other two
 - Between STG and C--, things get utterly dramatic, `show` and `read`
 explode, while `getline-appl` and `nothing` are reduced back to near-
 linear behavior.

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


More information about the ghc-tickets mailing list