-
-
Notifications
You must be signed in to change notification settings - Fork 555
perf(transformer/class-properties): re-use InstanceInitializerVisitor
#10543
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(transformer/class-properties): re-use InstanceInitializerVisitor
#10543
Conversation
How to use the Graphite Merge QueueAdd either label to this PR to merge it via the merge queue:
You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has enabled the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. This stack of pull requests is managed by Graphite. Learn more about stacking. |
CodSpeed Instrumentation Performance ReportMerging #10543 will not alter performanceComparing Summary
Benchmarks breakdown
|
Merge activity
|
…r` (#10543) Follow-on after #10495. 1. Branch on whether `instance_inits_constructor_scope_id` is `Some` only once, rather than on each turn of the loop. 2. Only create one `InstanceInitializerVisitor` for all the inits, rather than a new one for each init. `InstanceInitializerVisitor` contains a `Stack`, so ideal to re-use it, because `Stack` performs an allocation. These are small optimizations. I doubt will register on benchmarks.
9641e85
to
3418ae5
Compare
## [0.66.0] - 2025-04-23 ### Features - 7d5ad7d parser: Report error when `import type { type }` is used (#10528) (camc314) - 6e40fac parser: Report error when `export type { type }` is used (#10524) (camc314) ### Bug Fixes - 43ad4e9 ast: Box `this_param` in `TSCallSignatureDeclaration` (#10558) (Yuji Sugiura) - 8eb3c0a ast/estree: Fix raw deser for `FormalParameter` (#10548) (overlookmotel) - 3ebf220 codegen: Generate missing `type` in `export type {} from 'mod'` (#10539) (Boshen) - f19b287 estree: Add `TSParameterProperty` (#10534) (Yuji Sugiura) - 7284f16 isolated-declarations: Leading comments of `ExportDefaultDeclaration` and `TSExportAssignment` appear in incorrect places (#10559) (Dunqing) - 4c316a5 isolated_declarations: Fix broken snapshot files (#10561) (Boshen) - 84742d8 transformer/module_runner: Fix export default live binding (#10560) (hi-ogawa) - 6c115c7 transformer/module_runner: Fix execution order of re-export (#10362) (hi-ogawa) - b9d84b0 transformer/typescript: Remove `StringLiteral::raw` when rewriting extensions (#10554) (overlookmotel) ### Performance - 6a045c8 codegen: Speed up printing `Directive`s (#10551) (overlookmotel) - 3418ae5 transformer/class-properties: Re-use `InstanceInitializerVisitor` (#10543) (overlookmotel) - 7fcf0ac transformer/typescript: Reduce allocations renaming extensions (#10555) (overlookmotel) ### Documentation - 1a9530c transformer/class-properties: Fix typo (#10542) (overlookmotel) ### Refactor - 7e71282 transformer/class-properties: Correct outdated comment (#10546) (overlookmotel) - 596978b transformer/class-properties: Simplify to get `constructor` method only once (#10493) (Dunqing) - f13fe0a transformer/class-properties: Defer re-parenting initializers scopes until all instance properties are transformed (#10495) (Dunqing) - c83dad6 transformer/class-properties: Streamline handling scope of instance property initializer (#10492) (Dunqing) ### Styling - e10dfc8 traverse: Remove excess whitespace (#10544) (overlookmotel) ### Testing - 227febf allocator: Ignore a slow doc test (#10521) (Dunqing) - 14bb2be codegen: Add more tests for strings (#10552) (overlookmotel) Co-authored-by: Boshen <[email protected]>
Follow-on after #10495.
instance_inits_constructor_scope_id
isSome
only once, rather than on each turn of the loop.InstanceInitializerVisitor
for all the inits, rather than a new one for each init.InstanceInitializerVisitor
contains aStack
, so ideal to re-use it, becauseStack
performs an allocation.These are small optimizations. I doubt will register on benchmarks.