-
Notifications
You must be signed in to change notification settings - Fork 12.4k
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
Move incremental state to WeakSets #58087
Conversation
@typescript-bot perf test this Doubt this will do much of anything though, given we don't really have great perf tests for incremental parsing. |
@jakebailey Here they are:
tscComparison Report - baseline..pr
System info unknown
Hosts
Scenarios
tsserverComparison Report - baseline..pr
System info unknown
Hosts
Scenarios
startupComparison Report - baseline..pr
System info unknown
Hosts
Scenarios
Developer Information: |
It's a bit of a shame that we don't have any long-running perf tests that make edits. The closest thing here is the crawler which does a few random edits. |
src/compiler/parser.ts
Outdated
const incrementalInfo = { | ||
incrementallyParsed: new WeakSet<SourceFile>(), | ||
intersectsChange: new WeakSet<Node | NodeArray<Node>>(), | ||
}; |
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.
Probably these two should just be top-level variables, not one object.
@typescript-bot perf test this |
@jakebailey Here they are:
tscComparison Report - baseline..pr
System info unknown
Hosts
Scenarios
tsserverComparison Report - baseline..pr
System info unknown
Hosts
Scenarios
startupComparison Report - baseline..pr
System info unknown
Hosts
Scenarios
Developer Information: |
It turns out that the extra props we shove on nodes in incremental parsing are just "did we previously incrementally parse this, if so assert" and "did we make an edit that means we have to reparse", both of which are only ever set to true, so they don't even need to be WeakMaps, they're just write-only WeakSets.