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 |