perf: improve auto linking performance #2670
Open
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.
Summary
There are multiple parts of auto linking that are slow, so I made a quick perf pass to reduce the time CLI spends on searching for native files. The biggest gain comes from optimizing
findComponentDescriptors
to usejsSrcsDir
. For a small project with 7 common native dependencies the linking time goes from ~300ms to ~80ms. Perf and gains are bigger with more dependencies, so it's hard to asses the raw %.Changes are scoped to smaller commits:
config
, the native dependencies getters are invoked twice: first for the filtering pass, and then for stringily. Changed the filtering logic to push resolved getters of native deps instead of removing non-native dependenciesTest Plan
Make sure the projects are still properly linked
Checklist
react-native
checkout (instructions).