refactor: add turbo mode for the breakpoint predictor #1498
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.
AKA how to be faster than ripgrep ;)
Fixes #1149
Fixes microsoft/vscode#167911
This does some overall system optimization for how the breakpoint
predictor works. It achieves performance exceeding the VS Code API
ripgrep globbing, with plain JS.
Previously, we had an
ISearchStrategy
type that globbed for allsourcemap URIs in a target folder, and emitted those. Then the breakpoint
predictor had an mtime-based cache to decide whether it would parse the
sourcemap or not.
This moves the caching responsibility into
ISearchStrategy
, which thentakes a two-phase approach to processing files, allowing it to cache the
intermediate result the breakpoint predictor previously cached itself.
This means that:
compiled files that didn't previously reference the sourcefile. (We
still stat all directories to see if there are new files to pick up)
Some performance numbers:
The new search strategy can be disabled by setting
enableTurboSourcemaps: false
in your launch.json.