Speed up the override registration phase #228
Merged
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.
by prefiltering possible overrides first.
This significantly reduces the amount of startup time that is consumed
by installing overrides, especially C++ overrides that perform name demangling.
Each override that wants to be registered now provides a "matcher" which examines
the name of a symbol for an approximate test as to weather this override applies.
These can either be exact matches, prefix matches, or substring matches. Any
override that passes the prefilter test is considered in order, as before, to
determine more precicely if it applies.
On one modestly-sized example, this reduced overall verification time from
105 seconds to 32 seconds. The algorithm used here for pre-filtering is
quite naive, so additional improvements are perhaps possible. However,
at the momemnt, startup time is dominated by parsing the bitcode file itself.
Partially addresses #155