florence / cover

a code coverage tool for racket
MIT License
38 stars 7 forks source link

Parallelism? #140

Open jackfirth opened 6 years ago

jackfirth commented 6 years ago

What changes would it take for cover to instrument and run test modules in parallel?

florence commented 6 years ago
  1. https://github.com/florence/cover/issues/102 to avoid recompiling which is one of the slowest parts of cover. Annother issue here is because cover annotates higher phases a lot of the extra run time is in compilation, because compilation does coverage. And I'm not sure how to parallelize that.

  2. Changes to the module instantiation protocol to sharing the coverage between places (possibly using shared-fxvectors? or keeping things the same then sharing the coverage table after the run is done?).

  3. Something smarts to keep the memory usage down. A naive implementation would duplicate the coverage table per place which is bad (shared-fxvectors would be a solution here too maybe). Also this would reinstantiate a lot of modules, which isn't great because cover massively increases code size, and therefore memory usage.

But the TL;DR here is that because of 1, I'm not sure if its feasible. It's not on my current road map at least.