checkFamInstConsistency dominates compile time
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: #13092 (closed)##13719 (closed)
I also plan to add this test case to the codebase.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 8.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler (Type checker) |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | RyanGlScott, ezyang, rwbarton, simonmar, simonpj |
| Operating system | |
| Architecture |