Speed up processing of new files in daemon by caching ASTs #10128
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Processing newly installed stub files, in particular, could be quite slow incrementally
in mypy daemon. This is because adding N files results in N steps interally, each of
which adds one file. However, each step parses all remaining files, resulting in
an O(n**2) algorithm.
For example, processing
six
stubs could take about 40s (when not using acompiled mypy).
Partially address the issue by caching parsed ASTs during a single increment.
This speeds up the
import six
use case by about 3x when not using a compiledmypy. It's still about 3x slower when using daemon, however.