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.
This PR adds three benchmarks for the Span-method of the syntax nodes.
The syntax three does not store line information of every node. Instead we rely on a line-map and a binary search converting file offsets to source lines.
Position heavy tools (like formatter) could benefit from a line cache. The benchmarks in this commit may assist during optimization.
Three benchmarks (with still similar performance) have been added:
BenchmarkSpansRandomAccess accesses text spans in random order, acting as baseline for spans without cache.
BenchmarkSpansTreeInspect accesses text spans in tree traversal order. Tree traversal order means that the begin and end positions are in many cases in different lines, which makes it harder to implement an efficient cache.
BenchmarkSpansTokenList accesses text spans in linear order.