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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure an inline regex is the fastest way of determining if the first 4 values are numeric.
You could pre-compile, or alternatively even have a set of possible single digit strings, and iterate over the first 4 and break if it's not in the set.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
According to this benchmark, it seems inline regex or pre-compiled is actually fastest.
https://jsperf.com/check-whether-string-starts-with-four-numbers
In Chrome it doesn't appear to matter if it's inline or not, in Safari I notice a 2% improvement in pre-compiling.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tried both ways and the change was marginal, about 600s to build the schemas. Without the patch, it was 8000s. My guess is that the regex is optimized automatically.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@me4502 I used string.slice(0, 4) and checked if it was a number and regex was faster. I'm pretty sure v8 optimizes for it. node is using v8 = chrome so we're probably good.
@millette at least we got somewhere, not fast enough but faster.