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.
Benchmarking for #1304 shows that a lot of time is spent getting "ParsedLibraryResults", i.e. parsing files to get syntax trees.
Currently the parsing can be done multiple times per file because the results are not kept. In particular if there are N
built_value
classes in one file then it will be parsed at leastN
times.So, cache the results within one generation.
Add a benchmark to
presubmit
that creates a simple file with 2500 built_value classes and builds it. Before this change it takes about 1m22s, after it takes about 25s, i.e. it's about 3.4x faster.