perf: minimize identifier lookahead when parsing let #13328
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.
When reviewing #13325 I realize that we always peek a complete identifier after
let
in order to compare within
andinstanceof
. However, we could exit early if the next character is an IdentfierStart and from this position on it does not matchin
orinstanceof
.In a moderate
let
+ length-10 identifier (not starting withi
) benchmark cases, I see 17% performance gain. This benchmark is included in this PR.If we go to extreme and benchmark with length-100 identifier, the performance gain is 30%. This is expected since it completely avoid lookahead 100 characters to compare with
in
orinstanceof
. The benchmark is not included in this PR.This PR also fixed handling of non-BMP and escaped identifiers after
let
, the following valid cases are now parsed successfully: