Currently static analysis in Pythoscope is slow for (at least) three reasons:
- all files are inspected sequentially, instead of concurrently
- lib2to3 library we use for parsing Python modules is written in pure Python and thus is quite slow
- test-modules dependency algorithm used by the test generator is pretty simplistic
In short, we inspect too much, in a sequential manner using a pretty slow library. So, a plenty of ways to improve. :-)
- Multi-threaded map() for Python
- Multi-processing map() for Python
- Threaded map() by Connelly Barnes
- new multiprocessing module in Python 2.6
For dynamic analysis not only execution time, but also memory footprint matters. Current implementation doesn't seem to cause any problems so far, but we haven't tested it on some calculation-intensive code either.
This is again a sequential process that could be parallelized. OTOH this seems to be fast enough for now.