-
-
Notifications
You must be signed in to change notification settings - Fork 443
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
perf(linter): use aho-corasick
instead of regex
for string matching in jsx-a11y/img-redundant-alt
#5892
Conversation
Your org has enabled the Graphite merge queue for merging into mainAdd the label “0-merge” to the PR and Graphite will automatically add it to the merge queue when it’s ready to merge. Or use the label “hotfix” to add to the merge queue as a hot fix. You must have a Graphite account and log in to Graphite in order to use the merge queue. Sign up using this link. |
CodSpeed Performance ReportMerging #5892 will not alter performanceComparing Summary
|
Going to implement one more instance, but seems worth it so far: +1% on checker.ts and cal.com benchmarks, and running locally looks like it is a 0.5-3.5% improvement on every benchmark:
|
✅ I tried to rewrite all regexes into string matchers when I started porting rules, but I never told other contributors to rewrite them because it takes too much effort. I even have a policy of avoiding regexes https://oxc.rs/docs/contribute/rules.html#development-policy |
aho-corasick
instead of regex
for string matchingaho-corasick
instead of regex
for string matching in jsx-a11y/img-redundant-alt
fca2d1e
to
d7ceb48
Compare
This stack of pull requests is managed by Graphite. Learn more about stacking. Join @camchenry and the rest of your teammates on Graphite |
Merge activity
|
…ng in `jsx-a11y/img-redundant-alt` (#5892) hypothesis: profiling shows that Regex creation takes a decent amount of time. the `regex` crate uses `aho-corasick` internally for string matching, which is all we need in some cases. in theory, we could save time by using the lib directly and not needing the full regex syntax.
1fe5136
to
608d637
Compare
## [0.9.7] - 2024-09-23 ### Features - d24985e linter: Add `oxc-security/api-keys` (#5906) (DonIsaac) - f9b44c5 linter: Add unicode sets support to `no-useless-escape` rule (#5974) (camchenry) - 0f19848 linter: Implement `no-unexpected-multiline` rule (#5911) (camchenry) - 16fe383 linter: Implement `no-extend-native` rule (#5867) (Cam McHenry) ### Bug Fixes - eed9ac7 linter: Include actual span size in `no-regex-spaces` diagnostic (#5957) (camchenry) - 40c89c2 linter: Move `promise/avoid-new` to style category (#5961) (DonIsaac) ### Performance - 608d637 linter: Use `aho-corasick` instead of `regex` for string matching in `jsx-a11y/img-redundant-alt` (#5892) (camchenry) - 3148d4b linter: Check file path after checking node kind for `nextjs/no-head-element` (#5868) (Cam McHenry) ### Refactor - 0a5a4a9 linter: Use parsed patterns for `unicorn/no-hex-escape` (#5985) (camchenry) - 2cf2edd linter: Use parsed patterns in `no-empty-character-class` rule (#5980) (camchenry) - a9a8e2a linter: Use regex parser in `eslint/no-regex-spaces` (#5952) (camchenry) - 05f592b linter: Use parsed patterns in `unicorn/prefer-string-starts-ends-with` (#5949) (camchenry) - 3273b64 linter: Use parsed patterns for `unicorn/prefer-string-replace-all` rule (#5943) (camchenry) - ba7b01f linter: Add `LinterBuilder` (#5714) (DonIsaac) - db4f16a semantic: Call `with_trivias` before `build_with_jsdoc` (#5875) (Boshen) - 3d13c6d semantic: Impl `IntoIterator` for `&AstNodes` (#5873) (DonIsaac) ### Testing - b681c9a linter: Import test cases for `no-empty-character-class` (#5981) (camchenry) - 767602b linter: Add regression test for #5227 (#5975) (camchenry) --------- Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
hypothesis: profiling shows that Regex creation takes a decent amount of time. the
regex
crate usesaho-corasick
internally for string matching, which is all we need in some cases. in theory, we could save time by using the lib directly and not needing the full regex syntax.