Efficient checks for stable modules
authorBartosz Nitka <niteria@gmail.com>
Tue, 30 May 2017 11:48:57 +0000 (04:48 -0700)
committerBartosz Nitka <niteria@gmail.com>
Tue, 30 May 2017 11:49:10 +0000 (04:49 -0700)
commit8bfab438bdaa29b82c5ad57814bd60dcd02aa1c6
tree9f6828eaf1c1e5ca3c2a90beca63bc4d5b93947a
parentb5c73a9e1fb00f21831f3576f090ac7be3864c89
Efficient checks for stable modules

With a large number of modules in a home package
(in my case 5000) the costs of linear lookups becomes significant.
This changes them to efficient IntMap lookups.

It reduces the cost of `:reload` on unchanged source
from 5.77s to 1.62s on my test case.

I could go further and make `Linker.unload` also take a set,
but I prefer to concentrate on one thing at a time.

Test Plan: harbormaster

Reviewers: simonmar, austin, bgamari

Reviewed By: bgamari

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D3611
compiler/main/GhcMake.hs