[GHC] #13719: checkFamInstConsistency dominates compile time

#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

#13719: checkFamInstConsistency dominates compile time -------------------------------------+------------------------------------- Reporter: niteria | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler (Type | Version: 8.3 checker) | Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Compile-time | Unknown/Multiple performance bug | Test Case: Blocked By: | Blocking: Related Tickets: #13092, #13099, | Differential Rev(s): #12191 | Wiki Page: | -------------------------------------+------------------------------------- Changes (by niteria): * Attachment "gen.sh" added. gen.sh -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13719 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#13719: checkFamInstConsistency dominates compile time -------------------------------------+------------------------------------- Reporter: niteria | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler (Type | Version: 8.3 checker) | Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Compile-time | Unknown/Multiple performance bug | Test Case: Blocked By: | Blocking: Related Tickets: #13092, #13099, | Differential Rev(s): #12191 | Wiki Page: | -------------------------------------+------------------------------------- Comment (by simonpj): That does seem terrible. Thanks for continuing to investiate and explore solutions. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13719#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#13719: checkFamInstConsistency dominates compile time -------------------------------------+------------------------------------- Reporter: niteria | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler (Type | Version: 8.3 checker) | Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Compile-time | Unknown/Multiple performance bug | Test Case: Blocked By: | Blocking: Related Tickets: #13092, #13099, | Differential Rev(s): phab:D3600 #12191 | Wiki Page: | -------------------------------------+------------------------------------- Changes (by niteria): * differential: => phab:D3600 -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13719#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#13719: checkFamInstConsistency dominates compile time -------------------------------------+------------------------------------- Reporter: niteria | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler (Type | Version: 8.3 checker) | Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Compile-time | Unknown/Multiple performance bug | Test Case: Blocked By: | Blocking: Related Tickets: #13092, #13099, | Differential Rev(s): phab:D3600, #12191 | phab:D3602 Wiki Page: | -------------------------------------+------------------------------------- Changes (by niteria): * differential: phab:D3600 => phab:D3600, phab:D3602 -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13719#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#13719: checkFamInstConsistency dominates compile time
-------------------------------------+-------------------------------------
Reporter: niteria | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler (Type | Version: 8.3
checker) |
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: Compile-time | Unknown/Multiple
performance bug | Test Case:
Blocked By: | Blocking:
Related Tickets: #13092, #13099, | Differential Rev(s): phab:D3600,
#12191 | phab:D3602
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by Ben Gamari

#13719: checkFamInstConsistency dominates compile time
-------------------------------------+-------------------------------------
Reporter: niteria | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler (Type | Version: 8.3
checker) |
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: Compile-time | Unknown/Multiple
performance bug | Test Case:
Blocked By: | Blocking:
Related Tickets: #13092, #13099, | Differential Rev(s): phab:D3600,
#12191 | phab:D3602
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by Ben Gamari

#13719: checkFamInstConsistency dominates compile time -------------------------------------+------------------------------------- Reporter: niteria | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler (Type | Version: 8.3 checker) | Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Compile-time | Unknown/Multiple performance bug | Test Case: Blocked By: | Blocking: Related Tickets: #13092, #13099, | Differential Rev(s): phab:D3600, #12191 | phab:D3602, phab:D3603 Wiki Page: | -------------------------------------+------------------------------------- Changes (by niteria): * differential: phab:D3600, phab:D3602 => phab:D3600, phab:D3602, phab:D3603 -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13719#comment:6 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#13719: checkFamInstConsistency dominates compile time
-------------------------------------+-------------------------------------
Reporter: niteria | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler (Type | Version: 8.3
checker) |
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: Compile-time | Unknown/Multiple
performance bug | Test Case:
Blocked By: | Blocking:
Related Tickets: #13092, #13099, | Differential Rev(s): phab:D3600,
#12191 | phab:D3602, phab:D3603
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by Bartosz Nitka

#13719: checkFamInstConsistency dominates compile time -------------------------------------+------------------------------------- Reporter: niteria | Owner: (none) Type: bug | Status: closed Priority: normal | Milestone: Component: Compiler (Type | Version: 8.3 checker) | Resolution: fixed | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Compile-time | Unknown/Multiple performance bug | Test Case: Blocked By: | Blocking: Related Tickets: #13092, #13099, | Differential Rev(s): phab:D3600, #12191 | phab:D3602, phab:D3603 Wiki Page: | -------------------------------------+------------------------------------- Changes (by niteria): * status: new => closed * resolution: => fixed Comment: From my perspective this is fixed. It's a localized change with a nice upside, so we might want to merge to `ghc-8.2`. It applies cleanly, except for the testsuite. I'm happy to do the legwork, but I will leave the decision to Ben. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13719#comment:8 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC