
#13719: checkFamInstConsistency dominates compile time -------------------------------------+------------------------------------- Reporter: niteria | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.3 (Type checker) | Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: Compile-time Unknown/Multiple | performance bug Test Case: | Blocked By: Blocking: | Related Tickets: #13092, #13099, | #12191 Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- I'm looking into compile time issues on our internal code base. `checkFamInstConsistency` takes 50% of all compile time for `:load` in `ghci` for us. I've created a synthetic test case that approximates the issue and in which compiling 300 modules with one small data type each takes 65s total, and `checkFamInstConsistency` is 87% of that and 94.1% of allocations. `checkFamInstConsistency` is run to ensure consistency of a type family associated with Generics, but that's only semi-relevant. To reproduce: {{{ ./gen.sh ./inplace/bin/ghc-stage2 -keep-tmp-files DummyLevel3M100.hs }}} Profile with some relevant cost centres: https://phabricator.haskell.org/P150 The next step is to look into implementing: https://ghc.haskell.org/trac/ghc/ticket/13092#comment:14 I also plan to add this test case to the codebase. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13719 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler