perf(transformer): store needed options only on RegExp#5484
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. |
This stack of pull requests is managed by Graphite. Learn more about stacking. Join @overlookmotel and the rest of your teammates on |
9041112 to
82be1fe
Compare
CodSpeed Performance ReportMerging #5484 will not alter performanceComparing Summary
|
Merge activity
|
#5482 makes most of the `RegExpOptions` not be needed outside `new` method. So only store the remaining options which are actually needed on `RegExp`. This reduces size of `RegExp`. (this is micro-optimization, and unlikely to make a measurable difference, but why not?)
e55104a to
b4765af
Compare
82be1fe to
bfab091
Compare
|
Actually, I think maybe CodSpeed is giving a misleading result. I think this perf gain was actually due to the previous PR #5483. CodSpeed was probably comparing to 1 commit earlier than it should have. It does that when benchmark run has not completed yet on the commit it wants to compare to. |
## [0.27.0] - 2024-09-06 - bd820f9 semantic: [**BREAKING**] Remove `SymbolTable::get_symbol_id_from_name` and `SymbolTable::get_scope_id_from_name` (#5480) (overlookmotel) - cba93f5 ast: [**BREAKING**] Add `ThisExpression` variants to `JSXElementName` and `JSXMemberExpressionObject` (#5466) (overlookmotel) - 87c5df2 ast: [**BREAKING**] Rename `Expression::without_parentheses` (#5448) (overlookmotel) ### Features - e8bdd12 allocator: Add `AsMut` impl for `Box` (#5515) (overlookmotel) - 90facd3 ast: Add `ContentHash` trait; remove noop `Hash` implementation from `Span` (#5451) (rzvxa) - 23285f4 ast: Add `ContentEq` trait. (#5427) (rzvxa) - 59abf27 ast, parser: Add `oxc_regular_expression` types to the parser and AST. (#5256) (rzvxa) - 68a1c01 ast_tools: Add dedicated `Derive` trait. (#5278) (rzvxa) - c782916 codegen: Print `type_parameters` in `TaggedTemplateExpression` (#5438) (Dunqing) - 4cb63fe index: Impl rayon related to trait for IndexVec (#5421) (IWANABETHATGUY) - ba4b68c minifier: Remove parenthesized expression for dce (#5439) (Boshen) - ed8ab6d oxc: Conditional expose `oxc_cfg` in `oxc` crate (#5524) (IWANABETHATGUY) - 91b39c4 oxc_diagnostic: Impl DerefMut for OxcDiagnostic (#5474) (IWANABETHATGUY) - 10279f5 parser: Add syntax error for hyphen in `JSXMemberExpression` `<Foo.bar-baz />` (#5440) (Boshen) - 0f50b1e semantic: Check for initializers in ambient `VariableDeclaration`s (#5463) (DonIsaac) - 62f7fff semantic: Check for non-declared, non-abstract object accessors without bodies (#5461) (DonIsaac) - 5407143 semantic: Check for non-declared, non-abstract class accessors without bodies (#5460) (DonIsaac) - 052e94c semantic: Check for parameter properties in constructor overloads (#5459) (DonIsaac) - 32d4bbb transformer: Add `TransformOptions::enable_all` method (#5495) (Boshen) - c59d8b3 transformer: Support all /regex/ to `new RegExp` transforms (#5387) (Dunqing) - cedf7a4 xtask: Impl `as_ast_kind` method for each variant (#5491) (IWANABETHATGUY) ### Bug Fixes - 0df1d9d ast, codegen, linter: Panics in fixers. (#5431) (rzvxa) - fce549e diagnostics: Ignore `Interrupted` and `BrokenPipe` errors while printing (#5526) (Boshen) - ea7a52f napi/transform: Fix test (Boshen) - 9b984b3 regex: Panic on displaying surrogated `UnicodeEscape` characters. (#5469) (rzvxa) - 88b7ddb regular_expression: Handle unterminated character class (#5523) (leaysgur) - 7a797ac semantic: Incorrect reference when `MemberExpression` used in `TSPropertySignature` (#5525) (Dunqing) - d8b9909 semantic: `IdentifierReference` within `TSPropertySignature` cannot reference type-only import binding (#5441) (Dunqing) - 8f9627d transformer: RegExp transform do not transform invalid regexps (#5494) (overlookmotel) - 2060efc transformer: RegExp transform don't transform all RegExps (#5486) (overlookmotel) - cfe5497 transformer: Do not create double reference in JSX transform (#5414) (overlookmotel) - 0617249 transformer/nullish-coalescing-operator: Incorrect reference flags (#5408) (Dunqing) - 0eb32a6 traverse: Invalid variable name generated by `generate_uid_based_on_node` (#5407) (Dunqing)- b96bea4 Add back lifetime (#5507) (IWANABETHATGUY) ### Performance - bfabd8f syntax: Further optimize `is_identifier_name` (#5426) (overlookmotel) - aeda84f syntax: Optimize `is_identifier_name` (#5425) (overlookmotel) - ed8937e transformer: Memoize rope instance (#5518) (Dunqing) - bfab091 transformer: Store needed options only on `RegExp` (#5484) (overlookmotel) - b4765af transformer: Pre-calculate if unsupported patterns in RegExp transform (#5483) (overlookmotel) - 182ab91 transformer: Pre-calculate unsupported flags in RegExp transform (#5482) (overlookmotel) ### Documentation - 64db1b4 ast: Clarify docs for `RegExpPattern` (#5497) (overlookmotel) - 3f204a9 span: Update docs about `ContentEq` `Vec` comparison speed (#5478) (overlookmotel)- 00511fd Use `oxc_index` instead of `index_vec` in doc comments (#5423) (IWANABETHATGUY) ### Refactor - 9f6e0ed ast: Simplify `ContentEq` trait definition. (#5468) (rzvxa) - a43e951 ast: Use loop instead of recursion (#5447) (overlookmotel) - 2224cc4 ast: Renumber `JSXMemberExpressionObject` discriminants (#5464) (overlookmotel) - a952c47 ast: Use loop not recursion (#5449) (overlookmotel) - d9d7e7c ast: Remove `IdentifierName` from `TSThisParameter` (#5327) (overlookmotel) - ccc8a27 ast, ast_tools: Use full method path for generated derives trait calls. (#5462) (rzvxa) - fdb8857 linter: Use "parsed pattern" in `no_div_regex` rule. (#5417) (rzvxa) - e7bd49d regular_expression: Correct typo (#5429) (overlookmotel) - e4ed41d semantic: Change the reference flag to `ReferenceFlags::Type` if it is used within a `TSTypeQuery` (#5444) (Dunqing) - 94a6ac6 span: Use `Hasher` from `std` (#5476) (overlookmotel) - b47aca0 syntax: Use `generate_derive` for `CloneIn` in types outside of `oxc_ast` crate. (#5280) (rzvxa) - a96866d transformer: Re-order imports (#5499) (overlookmotel) - 6abde0a transformer: Clarify match in RegExp transform (#5498) (overlookmotel) - 09c522a transformer: RegExp transform report pattern parsing errors (#5496) (overlookmotel) - dd19823 transformer: RegExp transform do not take ownership of `Pattern` then reallocate it (#5492) (overlookmotel) - 2514cc9 transformer/react: Move all entry points to implementation of Traverse trait (#5473) (Dunqing) - c984219 transformer/typescript: Move all entry points to implementation of Traverse trait (#5422) (Dunqing) ### Styling - 2a43fa4 linter: Introduce the writing style from PR #5491 and reduce the if nesting (#5512) (dalaoshu) ### Testing - 340b535 linter/no-unused-vars: Arrow functions in tagged templates (#5510) (Don Isaac) Co-authored-by: Boshen <[email protected]>


#5482 makes most of the
RegExpOptionsnot be needed outsidenewmethod. So only store the remaining options which are actually needed onRegExp. This reduces size ofRegExp.(this is micro-optimization, and unlikely to make a measurable difference, but why not?)