Make module membership on ModuleGraph faster
When loading/reloading with a large number of modules (>5000) the cost of linear lookups becomes significant. The changes here made `:reload` go from 6s to 1s on my test case. The bottlenecks were `needsLinker` in `DriverPipeline` and `getModLoop` in `GhcMake`. Test Plan: ./validate Reviewers: simonmar, austin, bgamari Subscribers: thomie, rwbarton Differential Revision: https://phabricator.haskell.org/D3703
Showing
- compiler/backpack/DriverBkp.hs 3 additions, 2 deletionscompiler/backpack/DriverBkp.hs
- compiler/basicTypes/Module.hs 4 additions, 1 deletioncompiler/basicTypes/Module.hs
- compiler/main/DriverMkDepend.hs 9 additions, 7 deletionscompiler/main/DriverMkDepend.hs
- compiler/main/DriverPipeline.hs 1 addition, 4 deletionscompiler/main/DriverPipeline.hs
- compiler/main/GHC.hs 8 additions, 4 deletionscompiler/main/GHC.hs
- compiler/main/GhcMake.hs 49 additions, 24 deletionscompiler/main/GhcMake.hs
- compiler/main/HscMain.hs 1 addition, 1 deletioncompiler/main/HscMain.hs
- compiler/main/HscTypes.hs 57 additions, 10 deletionscompiler/main/HscTypes.hs
- ghc/GHCi/UI.hs 13 additions, 10 deletionsghc/GHCi/UI.hs
- ghc/GHCi/UI/Tags.hs 1 addition, 1 deletionghc/GHCi/UI/Tags.hs
- testsuite/tests/ghc-api/apirecomp001/myghc.hs 3 additions, 1 deletiontestsuite/tests/ghc-api/apirecomp001/myghc.hs
- utils/check-api-annotations/Main.hs 5 additions, 5 deletionsutils/check-api-annotations/Main.hs
- utils/check-ppr/Main.hs 1 addition, 1 deletionutils/check-ppr/Main.hs
- utils/ghctags/Main.hs 3 additions, 3 deletionsutils/ghctags/Main.hs
Loading
Please register or sign in to comment