vscode
vscode copied to clipboard
Optimise default glue paths in settings
trafficstars
🤔 What's changed?
- Optimised default glue paths to merge repeated patterns to improve performance
⚡️ What's your motivation?
- As the extension performs a complete reindex on code changes for specified glob paths, it is important that these paths are optimal for best performance
- Code volume is reduced considerably, making it clearer which file extensions are expected under common paths
🏷️ What kind of change is this?
- :bank: Refactoring/debt/DX (improvement to code design, tooling, etc. without changing behaviour)
📋 Checklist:
- [x] I agree to respect and uphold the Cucumber Community Code of Conduct
- [x] My change requires a change to the documentation.
- [x] I have updated the documentation accordingly.
- [x] Users should know about my change
- [x] I have added an entry to the "Unreleased" section of the CHANGELOG, linking to this pull request.
- [x] Complete benchmark of the changes
Benchmarked the fast-glob globbing library used by the Language Server through the node-glob benchmark.
Negligible difference for synchronous operations and interestingly the existing pattern appears to be around 17% faster (0.069s -> 0.081s); which is fairly insubstantial and may be a favourable tradeoff for a simplified default configuration. Though present performance constraints (#152) must also be considered.
@kieran-ryan ➜ /workspaces/node-glob (main) $ npm run bench
> [email protected] prebench
> npm run prepare
> [email protected] prepare
> tshy
> [email protected] bench
> bash benchmark.sh
--- pattern: 'features/**/*{.js,.jsx,.php,.py,.rb,.rs,.ts,.tsx,_test.go,.java}' ---
[ 'features/**/*{.js,.jsx,.php,.py,.rb,.rs,.ts,.tsx,_test.go,.java}' ]
~~ sync ~~
node fast-glob sync 0m0.089s 0
node globby sync 0m0.090s 0
node current globSync mjs 0m0.068s 0
node current glob syncStream 0m0.067s 0
~~ async ~~
node fast-glob async 0m0.081s 0
node globby async 0m0.092s 0
node current glob async mjs 0m0.068s 0
node current glob stream 0m0.067s 0
--- pattern: 'features/**/*.js features/**/*.jsx features/**/*.php features/**/*.py features/**/*.rb features/**/*.rs features/**/*.ts features/**/*.tsx features/**/*_test.go features/**/*.java' ---
[ 'features/**/*.js', 'features/**/*.jsx', 'features/**/*.php', 'features/**/*.py', 'features/**/*.rb', 'features/**/*.rs', 'features/**/*.ts', 'features/**/*.tsx', 'features/**/*_test.go', 'features/**/*.java' ]
~~ sync ~~
node fast-glob sync 0m0.090s 0
node globby sync 0m0.090s 0
node current globSync mjs 0m0.063s 0
node current glob syncStream 0m0.081s 0
~~ async ~~
node fast-glob async 0m0.069s 0
node globby async 0m0.093s 0
node current glob async mjs 0m0.067s 0
node current glob stream 0m0.117s 0