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.
I noticed a performance regression when updating my benchmark to the new kdljs version.
Chevrotain is very slow at backtracking. Removing all backtracking results in a 7x faster parse time on my benchmark document and a 14x faster parse time on the KDL Playground's default document.
The document used in the benchmark
Playground document
This PR changes the way properties and arguments are parsed. The way this is defined in the spec requires unbounded lookahead due to the support for node-space between a property name and the equals sign, and unbounded lookahead only works in chevrotain if you use backtracking.
This PR changes the parser to use a different but equivalent ruleset to parse properties and arguments:
The
propertyOrArgument
rule returns whether it encountered trailing node-space, which is then used in thenode
rule.