New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve performance of isPathIgnored()
utility
#6728
Conversation
This change delays the `getFileIgnorer()` call until needed. `getFileIgnorer()` internally uses `fs.readFileSync()` which is a blocking I/O and possible slow.
🦋 Changeset detectedLatest commit: c055ba8 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
* @param {{ cwd: string, ignorePath?: string | string[], ignorePattern?: string[] }} options | ||
* @typedef {import('stylelint').LinterOptions} LinterOptions | ||
* | ||
* @param {Pick<LinterOptions, 'ignorePath' | 'ignorePattern'> & { cwd: string }} options |
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.
[note] Clarify using LinterOptions
.
@@ -37,7 +39,7 @@ module.exports = function getFileIgnorer(options) { | |||
} | |||
} | |||
|
|||
ignorer.add(options.ignorePattern || []); | |||
if (ignorePattern) ignorer.add(ignorePattern); |
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.
[note] Reduce the ignorer.add()
call.
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.
LGTM, and thank you for the incremental improvements elsewhere in getFileIgnorer
.
I'm surprised that this is in the ballpark of a 75x speedup!
Thanks for the review! |
None.
This change delays the
getFileIgnorer()
call until needed.getFileIgnorer()
internally usesfs.readFileSync()
which is a blocking I/O and possibly slow.stylelint/lib/utils/getFileIgnorer.js
Line 30 in 0bc53af
Benchmark
script
main
branch)isPathIgnored x 42,235 ops/sec ±2.42% (70 runs sampled)
isPathIgnored x 2,966,362 ops/sec ±1.39% (77 runs sampled)
Environment: