Repository navigation
Conversation
Summary: **Problem**: In `RawPropsParser::at`, when a prop is read out of registration order (such as a component prop struct extending `ViewProps` and re-reading common keys like `width` or `backgroundColor`), the parser stepped linearly through every registered key one at a time, performing equality comparisons on strings until it reached the target key. On components with many props, this incurred dozens of redundant string comparisons per parse. **Proposed change**: Since `RawPropsParser` already maintains `nameToIndex_` (`RawPropsKeyMap`), when the key does not match the cursor's next position, look up the key directly via `nameToIndex_.at(key)`. This replaces the linear string comparison loop with an immediate key map lookup. Fixes react#59759 Changelog: [General][Changed] - Optimize out-of-order prop lookup in `RawPropsParser::at` via `nameToIndex_`
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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
Fixes #59759
In
RawPropsParser::at, when a prop is read out of registration order (such as a component prop struct extendingViewPropsand re-reading common keys likewidthorbackgroundColor), the parser stepped linearly through every registered key one at a time, performing equality comparisons on strings until it reached the target key. On components with many props, this incurred dozens of redundant string comparisons per parse.Because
RawPropsParseralready maintainsnameToIndex_(RawPropsKeyMap), when the key does not match the cursor's next position, we can look up the key directly vianameToIndex_.at(key). This replaces the linear string comparison loop with an immediate key map lookup.Changelog
[General][Changed] - Optimize out-of-order prop lookup in
RawPropsParser::atvianameToIndex_Test Plan
handleOutOfOrderPropsLookupinRawPropsTest.cppvalidating that looking up props out of registration order returns the expected values correctly.