Optimize number to PropertyKey
conversion
#3769
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.
In previous implementation when converting a number to
PropertyKey
, we always converted it to string and only when the conversion toPropertyKey::Index
was not possible we returned that string.Instead of using
map_or
which expects a ready value we use the_else
version that takes a function. Also took the oportunity to optimize thei32
toPropertyKey
conversion, since it's the one that's called when we convert fromJsValue::Integer
. Additionaly added a static string for"length"
for internal array methods so we don't convert from&[u16]
toPropertyKey
.Because the conversion happens very often this change resulted in big performance improvements :)
Benchmarks
Main
PR