
#9669: Long compile time/high memory usage for modules with many deriving clauses -------------------------------------+------------------------------------- Reporter: snoyberg | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.8.3 Resolution: | Keywords: Operating System: Linux | Architecture: x86_64 (amd64) Type of failure: Compile- | Difficulty: Unknown time performance bug | Blocked By: Test Case: | Related Tickets: Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Comment (by snoyberg): I've attached a file (generate.hs) to hopefully give a simpler view of the problem. This module (which depends only on base) will generate a Haskell source file which itself depends only on base. You can test this out with `runghc generate.hs > Bar.hs && time ghc --make Bar.hs +RTS -s`. You can also edit the generate.hs file to change which classes are derived and how many datatypes are generated. In my testing, without switching optimization flags, I noticed the following (all results generated when using 200 types): * All classes: 247MB max residency, 17.7s runtime * Removing `Generic`: 109MB, 13.4s * Removing `Generic` and `Data`: 78MB, 9.4s * Removing all but `Typeable`: 23MB, 1.1s * Removing all deriving: 13MB, 0.6s -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9669#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler