Skip to content
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

[WIP] Experimental Slim AstNode API #59992

Draft
wants to merge 5 commits into
base: main
Choose a base branch
from
Draft

[WIP] Experimental Slim AstNode API #59992

wants to merge 5 commits into from

Conversation

rbuckton
Copy link
Member

@rbuckton rbuckton commented Sep 17, 2024

This adds an experimental "slim" API for AST nodes that is intended to be highly monomorphic while maintaining the existing public API. This will also allow for gradual adoption of the new slim API internally.

This is a very early proof-of-concept designed to test the ramifications of this change and whether they will be beneficial to compiler performance long-term. The general principle of the change is that compiler internals will no longer depend on the highly polymorphic Node type, and instead depend on a slimmer AstNode class with a fixed layout that is roughly the following:

class AstNode<N extends Node> {
  // lazy-initialized extra fields for a node (id, original, emitNode, transformFlags, 
  // modifierFlagsCache, etc.)
  private _extra: AstNodeExtraFields | undefined;
  
  // Constructor used to produce a `Node` facade for the public API
  private _nodeConstructor: (new (ast: AstNode<N>) => N) | undefined;
  
  // Lazy-initialized `Node` facade for the public API
  private _node: N | undefined;

  kind: N["kind"];
  data: N["data"];
  parent: AstNode | undefined;
  flags: NodeFlags;
  pos: number;
  end: number;

  constructor(kind: N["kind"], data: N["data"], nodeConstructor: new (ast: AstNode<N>) => N) {
    ...
  }

  // lazy-initializes the `Node` facade for this AstNode
  get node() { ... }

  // lazy-initialized properties of an AstNode
  get id() { ... }
  set id(value) { ... }
  get original() { ... }
  set original(value) { ... }
  get emitNode() { ... }
  set emitNode(value) { ... }
  get transformFlags() { ... }
  set transformFlags(value) { ... }
}

This "slim" node is designed to be small and allow for monomorphic access to the most common shared properties of our AST nodes. In place of the existing Node type, the public API would surface a facade based on something like this definition of Node:

class Node<K extends SyntaxKind, T extends AstData> {
  /** @internal */ readonly ast: AstNode<Node<K, T>>;

  constructor(ast: AstNode<Node<K, T>>) {
    this.ast = ast;
  }

  /** @internal */ get data(): T { return this.ast.data; }

  get kind(): K { return this.ast.kind; }
  get pos() { return this.ast.pos; }
  get end() { return this.ast.end; }
  get flags() { return this.ast.flags; }
  get parent() { return this.ast.parent; }
  get id() { return this.ast.id; }
  // etc.
}

Node-specific fields will live in objects held by the data property, such as this class that describes a BinaryExpression:

class AstBinaryExpressionData extends AstData {
  left!: AstNode<Expression>;
  operatorToken!: AstNode<BinaryOperatorToken>;
  right!: AstNode<Expression>;
  // etc.
}

While the BinaryExpression we provide today would be replaced by a facade:

class BinaryExpression extends Node<SyntaxKind.BinaryExpression, AstBinaryExpressionData> {
  declare _expressionBrand: any;
  declare _declarationBrand: any;
  declare _jsdocContainerBrand: any;

  /** @internal */ declare readonly ast: AstBinaryExpression;

  get left() { return this.ast.data.left?.node; }
  set left(value) { this.ast.data.left = value?.ast; }
  get operatorToken() { return this.ast.data.operatorToken?.node; }
  set operatorToken(value) { this.ast.data.operatorToken = value?.ast; }
  get right() { return this.ast.data.right?.node; }
  set right(value) { this.ast.data.right = value?.ast; }
  // etc.
}

type AstBinaryExpression = AstNode<BinaryExpression>;

Work on this PR is expected to progress in stages. Until work has progressed far enough along, we expect performance numbers to be much worse before they get better due to the overhead from the compiler internals relying on the facade vs the slim node.

There will hopefully be some additional benefits to this change if it shows promise:

  • Removes use of objectAllocator for node constructors
  • Moves all language service Node extensions to the compiler (e.g., no more NodeObject)
  • Common structure of AstNode could allow for more efficient encodings of pos/end/flags/etc.
  • Potentially easy to swap out internally with shared structs in the future.

TODO

  • Initial "slim" AstNode implementation
  • Minimal AstNode version of NodeFactory and ParenthesizerRules
  • Redirect NodeFactory and ParenthesizerRules to leverage AstNode-versions
  • Migrate parser.ts to use AstNode
  • Migrate binder.ts to use AstNode
  • Migrate checker.ts to use AstNode
  • Migrate transformers to use AstNode
  • Migrate emitter.ts to use AstNode
  • Migrate language service to use AstNode

Related #59190
Related #58928
Related #51682
Related #51913

@typescript-bot typescript-bot added Author: Team For Uncommitted Bug PR for untriaged, rejected, closed or missing bug labels Sep 17, 2024
@typescript-bot
Copy link
Collaborator

Looks like you're introducing a change to the public API surface area. If this includes breaking changes, please document them on our wiki's API Breaking Changes page.

Also, please make sure @DanielRosenwasser and @RyanCavanaugh are aware of the changes, just as a heads up.

@rbuckton
Copy link
Member Author

@typescript-bot perf test
@typescript-bot test top400
@typescript-bot test tsserver top100
@typescript-bot user test this
@typescript-bot user test tsserver

@typescript-bot
Copy link
Collaborator

Hey @rbuckton, this PR is in an unmergable state, so is missing a merge commit to run against; please resolve conflicts and try again.

@rbuckton
Copy link
Member Author

@typescript-bot perf test
@typescript-bot test top400
@typescript-bot test tsserver top100
@typescript-bot user test this
@typescript-bot user test tsserver

@typescript-bot
Copy link
Collaborator

typescript-bot commented Sep 17, 2024

Starting jobs; this comment will be updated as builds start and complete.

Command Status Results
perf test ✅ Started 👀 Results
test top400 ✅ Started ✅ Results
test tsserver top100 ✅ Started 👀 Results
user test this ✅ Started ✅ Results
user test tsserver ✅ Started ✅ Results

@typescript-bot
Copy link
Collaborator

@rbuckton Here are the results of running the user tests with tsserver comparing main and refs/pull/59992/merge:

There were infrastructure failures potentially unrelated to your change:

  • 1 instance of "Unknown failure"

Otherwise...

Everything looks good!

@typescript-bot
Copy link
Collaborator

@rbuckton Here are the results of running the user tests with tsc comparing main and refs/pull/59992/merge:

Everything looks good!

@typescript-bot
Copy link
Collaborator

@rbuckton
The results of the perf run you requested are in!

Here they are:

tsc

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
Compiler-Unions - node (v18.15.0, x64)
Errors 30 30 ~ ~ ~ p=1.000 n=6
Symbols 62,153 62,153 ~ ~ ~ p=1.000 n=6
Types 50,242 50,242 ~ ~ ~ p=1.000 n=6
Memory used 193,087k (± 0.76%) 263,539k (± 0.02%) 🔻+70,452k (+36.49%) 263,476k 263,599k p=0.005 n=6
Parse Time 1.31s (± 0.93%) 1.77s 🔻+0.46s (+35.46%) ~ ~ p=0.003 n=6
Bind Time 0.71s 1.13s (± 0.36%) 🔻+0.42s (+58.92%) 1.12s 1.13s p=0.002 n=6
Check Time 9.54s (± 0.38%) 11.72s (± 0.47%) 🔻+2.18s (+22.83%) 11.63s 11.78s p=0.005 n=6
Emit Time 2.73s (± 0.95%) 4.05s (± 0.31%) 🔻+1.32s (+48.53%) 4.03s 4.06s p=0.005 n=6
Total Time 14.28s (± 0.15%) 18.67s (± 0.26%) 🔻+4.38s (+30.68%) 18.59s 18.72s p=0.005 n=6
angular-1 - node (v18.15.0, x64)
Errors 7 7 ~ ~ ~ p=1.000 n=6
Symbols 945,753 945,753 ~ ~ ~ p=1.000 n=6
Types 410,067 410,067 ~ ~ ~ p=1.000 n=6
Memory used 1,222,737k (± 0.00%) 1,670,641k (± 0.01%) 🔻+447,904k (+36.63%) 1,670,496k 1,670,735k p=0.005 n=6
Parse Time 7.93s (± 0.52%) 11.97s (± 0.58%) 🔻+4.04s (+50.95%) 11.88s 12.03s p=0.005 n=6
Bind Time 2.22s (± 0.54%) 4.09s (± 0.45%) 🔻+1.87s (+84.03%) 4.06s 4.11s p=0.005 n=6
Check Time 36.45s (± 0.29%) 50.23s (± 0.33%) 🔻+13.78s (+37.81%) 50.02s 50.43s p=0.005 n=6
Emit Time 17.90s (± 0.31%) 26.21s (± 0.38%) 🔻+8.32s (+46.47%) 26.08s 26.32s p=0.005 n=6
Total Time 64.49s (± 0.18%) 92.51s (± 0.18%) 🔻+28.01s (+43.43%) 92.28s 92.66s p=0.005 n=6
mui-docs - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 2,520,551 2,520,551 ~ ~ ~ p=1.000 n=6
Types 935,995 935,995 ~ ~ ~ p=1.000 n=6
Memory used 2,350,355k (± 0.00%) 2,729,076k (± 0.00%) 🔻+378,721k (+16.11%) 2,728,900k 2,729,237k p=0.005 n=6
Parse Time 11.02s (± 0.51%) 14.85s (± 0.29%) 🔻+3.83s (+34.79%) 14.80s 14.92s p=0.005 n=6
Bind Time 2.56s (± 0.80%) 4.47s (± 0.33%) 🔻+1.91s (+74.66%) 4.45s 4.49s p=0.005 n=6
Check Time 86.26s (± 0.34%) 105.84s (± 2.23%) 🔻+19.58s (+22.70%) 104.54s 110.63s p=0.005 n=6
Emit Time 0.33s (± 2.71%) 0.34s +0.01s (+ 3.03%) ~ ~ p=0.028 n=6
Total Time 100.17s (± 0.35%) 125.51s (± 1.90%) 🔻+25.34s (+25.30%) 124.24s 130.36s p=0.005 n=6
self-build-src - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 1,245,952 1,428,855 🔻+182,903 (+14.68%) ~ ~ p=0.001 n=6
Types 264,213 277,478 🔻+13,265 (+ 5.02%) ~ ~ p=0.001 n=6
Memory used 2,397,953k (± 0.05%) 3,390,884k (± 0.02%) 🔻+992,932k (+41.41%) 3,389,986k 3,391,681k p=0.005 n=6
Parse Time 6.07s (± 0.44%) 10.22s (± 0.47%) 🔻+4.15s (+68.36%) 10.18s 10.29s p=0.005 n=6
Bind Time 2.26s (± 1.00%) 4.34s (± 0.58%) 🔻+2.08s (+92.32%) 4.30s 4.37s p=0.005 n=6
Check Time 41.37s (± 0.73%) 57.08s (± 0.98%) 🔻+15.71s (+37.97%) 56.36s 57.66s p=0.005 n=6
Emit Time 3.61s (± 3.38%) 5.02s (± 0.87%) 🔻+1.41s (+39.17%) 4.95s 5.08s p=0.005 n=6
Total Time 53.31s (± 0.35%) 76.68s (± 0.67%) 🔻+23.37s (+43.83%) 75.96s 77.25s p=0.005 n=6
self-build-src-public-api - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 1,245,952 1,428,855 🔻+182,903 (+14.68%) ~ ~ p=0.001 n=6
Types 264,213 277,478 🔻+13,265 (+ 5.02%) ~ ~ p=0.001 n=6
Memory used 2,472,518k (± 0.01%) 3,514,815k (± 2.44%) 🔻+1,042,297k (+42.16%) 3,479,298k 3,690,236k p=0.005 n=6
Parse Time 7.89s (± 0.59%) 13.01s (± 0.55%) 🔻+5.12s (+64.95%) 12.92s 13.11s p=0.005 n=6
Bind Time 2.53s (± 0.72%) 5.31s (± 0.71%) 🔻+2.78s (+110.09%) 5.26s 5.37s p=0.005 n=6
Check Time 51.21s (± 0.93%) 71.22s (± 0.19%) 🔻+20.02s (+39.09%) 71.06s 71.41s p=0.005 n=6
Emit Time 4.52s (± 3.40%) 6.18s (± 0.32%) 🔻+1.67s (+36.85%) 6.15s 6.20s p=0.005 n=6
Total Time 66.14s (± 0.55%) 95.76s (± 0.16%) 🔻+29.61s (+44.77%) 95.50s 95.91s p=0.005 n=6
self-compiler - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 259,885 331,296 🔻+71,411 (+27.48%) ~ ~ p=0.001 n=6
Types 106,140 119,398 🔻+13,258 (+12.49%) ~ ~ p=0.001 n=6
Memory used 435,581k (± 0.01%) 680,639k (± 0.01%) 🔻+245,058k (+56.26%) 680,542k 680,759k p=0.005 n=6
Parse Time 4.24s (± 0.53%) 6.45s (± 0.51%) 🔻+2.21s (+52.08%) 6.42s 6.49s p=0.005 n=6
Bind Time 1.61s (± 0.47%) 2.93s (± 0.84%) 🔻+1.32s (+82.18%) 2.91s 2.97s p=0.005 n=6
Check Time 22.42s (± 0.19%) 33.36s (± 0.28%) 🔻+10.94s (+48.79%) 33.24s 33.48s p=0.005 n=6
Emit Time 1.88s (± 0.78%) 3.34s (± 0.69%) 🔻+1.46s (+77.73%) 3.31s 3.37s p=0.005 n=6
Total Time 30.14s (± 0.17%) 46.08s (± 0.26%) 🔻+15.93s (+52.85%) 45.94s 46.29s p=0.005 n=6
ts-pre-modules - node (v18.15.0, x64)
Errors 68 68 ~ ~ ~ p=1.000 n=6
Symbols 225,018 225,018 ~ ~ ~ p=1.000 n=6
Types 94,249 94,249 ~ ~ ~ p=1.000 n=6
Memory used 370,239k (± 0.02%) 495,006k (± 0.01%) 🔻+124,767k (+33.70%) 494,975k 495,074k p=0.005 n=6
Parse Time 2.75s (± 0.99%) 3.90s (± 0.56%) 🔻+1.15s (+41.90%) 3.86s 3.92s p=0.005 n=6
Bind Time 1.55s (± 1.03%) 2.37s (± 0.64%) 🔻+0.82s (+52.74%) 2.34s 2.38s p=0.005 n=6
Check Time 15.73s (± 0.18%) 21.10s (± 0.24%) 🔻+5.37s (+34.12%) 21.04s 21.15s p=0.005 n=6
Emit Time 0.00s 0.00s ~ ~ ~ p=1.000 n=6
Total Time 20.03s (± 0.23%) 27.36s (± 0.15%) 🔻+7.33s (+36.61%) 27.30s 27.40s p=0.005 n=6
vscode - node (v18.15.0, x64)
Errors 1 0 ~ ~ ~ p=1.000 n=6+0
Symbols 3,071,638 0 ~ ~ ~ p=1.000 n=6+0
Types 1,060,266 0 ~ ~ ~ p=1.000 n=6+0
Memory used 3,175,799k (± 0.00%) 0k ~ ~ ~ p=1.000 n=6+0
Parse Time 17.11s (± 0.25%) 0s ~ ~ ~ p=1.000 n=6+0
Bind Time 5.30s (± 0.44%) 0s ~ ~ ~ p=1.000 n=6+0
Check Time 99.16s (± 0.59%) 0s ~ ~ ~ p=1.000 n=6+0
Emit Time 28.12s (± 7.42%) 0s ~ ~ ~ p=1.000 n=6+0
Total Time 149.69s (± 1.17%) 0s ~ ~ ~ p=1.000 n=6+0
webpack - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 277,157 277,157 ~ ~ ~ p=1.000 n=6
Types 112,949 112,949 ~ ~ ~ p=1.000 n=6
Memory used 426,908k (± 0.01%) 539,573k (± 0.01%) 🔻+112,665k (+26.39%) 539,532k 539,626k p=0.005 n=6
Parse Time 3.96s (± 0.43%) 5.30s (± 0.40%) 🔻+1.34s (+33.74%) 5.26s 5.32s p=0.005 n=6
Bind Time 1.74s (± 1.12%) 2.70s (± 0.80%) 🔻+0.96s (+55.03%) 2.67s 2.72s p=0.005 n=6
Check Time 17.67s (± 0.29%) 22.83s (± 0.24%) 🔻+5.16s (+29.22%) 22.77s 22.90s p=0.005 n=6
Emit Time 0.00s 0.00s ~ ~ ~ p=1.000 n=6
Total Time 23.37s (± 0.32%) 30.82s (± 0.24%) 🔻+7.45s (+31.88%) 30.76s 30.93s p=0.005 n=6
xstate-main - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 531,582 531,582 ~ ~ ~ p=1.000 n=6
Types 181,676 181,676 ~ ~ ~ p=1.000 n=6
Memory used 463,664k (± 0.01%) 548,851k (± 0.01%) 🔻+85,187k (+18.37%) 548,810k 548,878k p=0.005 n=6
Parse Time 2.60s (± 0.31%) 3.59s (± 0.23%) 🔻+0.98s (+37.77%) 3.58s 3.60s p=0.004 n=6
Bind Time 0.93s 1.53s (± 0.53%) 🔻+0.60s (+64.16%) 1.52s 1.54s p=0.003 n=6
Check Time 15.41s (± 0.24%) 17.97s (± 0.21%) 🔻+2.56s (+16.61%) 17.93s 18.02s p=0.005 n=6
Emit Time 0.00s 0.00s ~ ~ ~ p=1.000 n=6
Total Time 18.95s (± 0.19%) 23.09s (± 0.14%) 🔻+4.14s (+21.84%) 23.04s 23.13s p=0.005 n=6
System info unknown
Hosts
  • node (v18.15.0, x64)
Scenarios
  • Compiler-Unions - node (v18.15.0, x64)
  • angular-1 - node (v18.15.0, x64)
  • mui-docs - node (v18.15.0, x64)
  • self-build-src - node (v18.15.0, x64)
  • self-build-src-public-api - node (v18.15.0, x64)
  • self-compiler - node (v18.15.0, x64)
  • ts-pre-modules - node (v18.15.0, x64)
  • vscode - node (v18.15.0, x64)
  • webpack - node (v18.15.0, x64)
  • xstate-main - node (v18.15.0, x64)
Benchmark Name Iterations
Current pr 6
Baseline baseline 6

tsserver

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
Compiler-UnionsTSServer - node (v18.15.0, x64)
Req 1 - updateOpen 2,297ms (± 0.52%) 3,187ms (± 0.35%) 🔻+890ms (+38.74%) 3,165ms 3,196ms p=0.005 n=6
Req 2 - geterr 5,164ms (± 0.45%) 6,581ms (± 0.67%) 🔻+1,417ms (+27.44%) 6,544ms 6,660ms p=0.005 n=6
Req 3 - references 263ms (± 0.96%) 361ms (± 0.46%) 🔻+98ms (+37.26%) 359ms 363ms p=0.005 n=6
Req 4 - navto 227ms (± 0.36%) 296ms (± 0.35%) 🔻+69ms (+30.37%) 294ms 297ms p=0.004 n=6
Req 5 - completionInfo count 1,357 1,357 ~ ~ ~ p=1.000 n=6
Req 5 - completionInfo 81ms (± 7.01%) 85ms (± 7.92%) ~ 81ms 98ms p=0.684 n=6
CompilerTSServer - node (v18.15.0, x64)
Req 1 - updateOpen 2,415ms (± 1.47%) 3,359ms (± 0.47%) 🔻+944ms (+39.08%) 3,341ms 3,388ms p=0.005 n=6
Req 2 - geterr 3,922ms (± 0.44%) 5,046ms (± 1.41%) 🔻+1,124ms (+28.67%) 4,943ms 5,122ms p=0.005 n=6
Req 3 - references 274ms (± 1.26%) 397ms (± 2.17%) 🔻+123ms (+44.88%) 390ms 413ms p=0.005 n=6
Req 4 - navto 232ms (± 3.02%) 306ms (± 1.47%) 🔻+74ms (+32.04%) 297ms 309ms p=0.005 n=6
Req 5 - completionInfo count 1,519 1,519 ~ ~ ~ p=1.000 n=6
Req 5 - completionInfo 77ms (± 8.85%) 84ms (± 1.00%) ~ 83ms 85ms p=0.220 n=6
xstate-main-1-tsserver - node (v18.15.0, x64)
Req 1 - updateOpen 5,193ms (± 0.23%) 7,215ms (± 3.09%) 🔻+2,022ms (+38.95%) 7,067ms 7,516ms p=0.005 n=6
Req 2 - geterr 1,120ms (± 0.37%) 1,263ms (± 0.96%) 🔻+143ms (+12.79%) 1,248ms 1,276ms p=0.005 n=6
Req 3 - references 86ms (± 4.89%) 108ms (± 3.74%) 🔻+22ms (+25.93%) 104ms 112ms p=0.004 n=6
Req 4 - navto 441ms (± 0.24%) 502ms (± 0.96%) 🔻+62ms (+14.00%) 496ms 508ms p=0.005 n=6
Req 5 - completionInfo count 3,444 3,444 ~ ~ ~ p=1.000 n=6
Req 5 - completionInfo 840ms (± 1.43%) 895ms (± 1.17%) 🔻+56ms (+ 6.63%) 875ms 903ms p=0.005 n=6
System info unknown
Hosts
  • node (v18.15.0, x64)
Scenarios
  • CompilerTSServer - node (v18.15.0, x64)
  • Compiler-UnionsTSServer - node (v18.15.0, x64)
  • xstate-main-1-tsserver - node (v18.15.0, x64)
Benchmark Name Iterations
Current pr 6
Baseline baseline 6

startup

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
tsc-startup - node (v18.15.0, x64)
Execution time 188.86ms (± 0.19%) 212.21ms (± 0.22%) 🔻+23.35ms (+12.36%) 208.70ms 219.53ms p=0.000 n=600
tsserver-startup - node (v18.15.0, x64)
Execution time 232.34ms (± 0.12%) 248.96ms (± 0.14%) 🔻+16.62ms (+ 7.15%) 247.54ms 254.80ms p=0.000 n=600
tsserverlibrary-startup - node (v18.15.0, x64)
Execution time 227.71ms (± 0.14%) 243.82ms (± 0.15%) 🔻+16.11ms (+ 7.07%) 242.51ms 248.92ms p=0.000 n=600
typescript-startup - node (v18.15.0, x64)
Execution time 226.97ms (± 0.14%) 243.14ms (± 0.15%) 🔻+16.18ms (+ 7.13%) 241.61ms 250.40ms p=0.000 n=600
System info unknown
Hosts
  • node (v18.15.0, x64)
Scenarios
  • tsc-startup - node (v18.15.0, x64)
  • tsserver-startup - node (v18.15.0, x64)
  • tsserverlibrary-startup - node (v18.15.0, x64)
  • typescript-startup - node (v18.15.0, x64)
Benchmark Name Iterations
Current pr 6
Baseline baseline 6

Developer Information:

Download Benchmarks

@rbuckton
Copy link
Member Author

As expected, the facade is significantly slower, though it is quite a bit slower than I was hoping. Hopefully we'll start seeing better numbers once I finish migrating the parser.

@typescript-bot
Copy link
Collaborator

@rbuckton Here are the results of running the top 200 repos with tsserver comparing main and refs/pull/59992/merge:

Something interesting changed - please have a look.

Details

Server exited prematurely with code unknown and signal SIGABRT

Server exited prematurely with code unknown and signal SIGABRT

Affected repos

backstage/backstage Raw error text: RepoResults8/backstage.backstage.rawError.txt in the artifact folder
Replay commands: RepoResults8/backstage.backstage.replay.txt in the artifact folder

Last few requests

{"seq":134,"type":"request","command":"completionInfo","arguments":{"file":"@PROJECT_ROOT@/scripts/templates/knex-migration.stub.js","line":29,"offset":4,"includeExternalModuleExports":false,"triggerKind":1}}
{"seq":135,"type":"request","command":"completionEntryDetails","arguments":{"file":"@PROJECT_ROOT@/scripts/templates/knex-migration.stub.js","line":29,"offset":4,"entryNames":["@abstract"]}}
{"seq":136,"type":"request","command":"updateOpen","arguments":{"changedFiles":[],"closedFiles":["@PROJECT_ROOT@/scripts/list-backend-feature.js"],"openFiles":[]}}
{"seq":137,"type":"request","command":"updateOpen","arguments":{"changedFiles":[],"closedFiles":[],"openFiles":[{"file":"@PROJECT_ROOT@/packages/eslint-plugin/index.js","projectRootPath":"@PROJECT_ROOT@"}]}}

Repro steps

#!/bin/bash

git clone https://github.com/backstage/backstage --recurse-submodules
git -C "./backstage" reset --hard 6f8d71b74ca53b6a62d0ff6325f7849d3b48a822
# Install packages (exact steps are below, but it might be easier to follow the repo readme)
yarn --cwd "./backstage" install --no-immutable --mode=skip-build
yarn --cwd "./backstage/storybook" install --no-immutable --mode=skip-build
yarn --cwd "./backstage/microsite" install --no-immutable --mode=skip-build
downloadUrl=$(curl -s "https://typescript.visualstudio.com/TypeScript/_apis/build/builds/163602/artifacts?artifactName=RepoResults8&api-version=7.0" | jq -r ".resource.downloadUrl")
wget -O RepoResults8.zip "$downloadUrl"
unzip -p RepoResults8.zip RepoResults8/backstage.backstage.replay.txt > backstage.backstage.replay.txt
npm install --no-save @typescript/server-replay

To run the repro:

# `npx tsreplay --help` to learn about helpful switches for debugging, logging, etc.
npx tsreplay ./backstage ./backstage.backstage.replay.txt <PATH_TO_tsserver.js>

Server exited prematurely with code unknown and signal SIGABRT

Server exited prematurely with code unknown and signal SIGABRT

Affected repos

n8n-io/n8n Raw error text: RepoResults3/n8n-io.n8n.rawError.txt in the artifact folder
Replay commands: RepoResults3/n8n-io.n8n.replay.txt in the artifact folder

Last few requests

{"seq":995,"type":"request","command":"completionInfo","arguments":{"file":"@PROJECT_ROOT@/packages/editor-ui/src/Interface.ts","line":1583,"offset":18,"includeExternalModuleExports":false,"triggerKind":2,"triggerCharacter":"'"}}
{"seq":996,"type":"request","command":"definitionAndBoundSpan","arguments":{"file":"@PROJECT_ROOT@/packages/editor-ui/src/Interface.ts","line":1589,"offset":4}}
{"seq":997,"type":"request","command":"updateOpen","arguments":{"changedFiles":[],"closedFiles":["@PROJECT_ROOT@/packages/nodes-base/credentials/CarbonBlackApi.credentials.ts"],"openFiles":[]}}
{"seq":998,"type":"request","command":"updateOpen","arguments":{"changedFiles":[],"closedFiles":[],"openFiles":[{"file":"@PROJECT_ROOT@/packages/design-system/src/plugin.ts","projectRootPath":"@PROJECT_ROOT@"}]}}

Repro steps

#!/bin/bash

git clone https://github.com/n8n-io/n8n --recurse-submodules
git -C "./n8n" reset --hard 989f69d1f4f63d3f0c35341d310bc78914137677
pnpm --dir "./n8n" install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
downloadUrl=$(curl -s "https://typescript.visualstudio.com/TypeScript/_apis/build/builds/163602/artifacts?artifactName=RepoResults3&api-version=7.0" | jq -r ".resource.downloadUrl")
wget -O RepoResults3.zip "$downloadUrl"
unzip -p RepoResults3.zip RepoResults3/n8n-io.n8n.replay.txt > n8n-io.n8n.replay.txt
npm install --no-save @typescript/server-replay

To run the repro:

# `npx tsreplay --help` to learn about helpful switches for debugging, logging, etc.
npx tsreplay ./n8n ./n8n-io.n8n.replay.txt <PATH_TO_tsserver.js>

Server exited prematurely with code unknown and signal SIGABRT

Server exited prematurely with code unknown and signal SIGABRT

Affected repos

remotion-dev/remotion Raw error text: RepoResults14/remotion-dev.remotion.rawError.txt in the artifact folder
Replay commands: RepoResults14/remotion-dev.remotion.replay.txt in the artifact folder

Last few requests

{"seq":256,"type":"request","command":"navbar","arguments":{"file":"@PROJECT_ROOT@/packages/cli/remotionb-cli.js"}}
{"seq":257,"type":"request","command":"updateOpen","arguments":{"changedFiles":[{"fileName":"@PROJECT_ROOT@/packages/cli/remotionb-cli.js","textChanges":[{"newText":" //comment","start":{"line":1,"offset":19},"end":{"line":1,"offset":19}}]}],"closedFiles":[],"openFiles":[]}}
{"seq":258,"type":"request","command":"updateOpen","arguments":{"changedFiles":[],"closedFiles":["@PROJECT_ROOT@/packages/compositor-linux-x64-gnu/index.js"],"openFiles":[]}}
{"seq":259,"type":"request","command":"updateOpen","arguments":{"changedFiles":[],"closedFiles":[],"openFiles":[{"file":"@PROJECT_ROOT@/packages/astro-example/test.js","projectRootPath":"@PROJECT_ROOT@"}]}}

Repro steps

#!/bin/bash

git clone https://github.com/remotion-dev/remotion --recurse-submodules
git -C "./remotion" reset --hard 6acfd716dc5e3bad7efd4414a7392455694ed00b
pnpm --dir "./remotion" install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
downloadUrl=$(curl -s "https://typescript.visualstudio.com/TypeScript/_apis/build/builds/163602/artifacts?artifactName=RepoResults14&api-version=7.0" | jq -r ".resource.downloadUrl")
wget -O RepoResults14.zip "$downloadUrl"
unzip -p RepoResults14.zip RepoResults14/remotion-dev.remotion.replay.txt > remotion-dev.remotion.replay.txt
npm install --no-save @typescript/server-replay

To run the repro:

# `npx tsreplay --help` to learn about helpful switches for debugging, logging, etc.
npx tsreplay ./remotion ./remotion-dev.remotion.replay.txt <PATH_TO_tsserver.js>
elastic/kibana Raw error text: RepoResults14/elastic.kibana.rawError.txt in the artifact folder
Replay commands: RepoResults14/elastic.kibana.replay.txt in the artifact folder

Last few requests

{"seq":96,"type":"request","command":"definitionAndBoundSpan","arguments":{"file":"@PROJECT_ROOT@/packages/kbn-cli-dev-mode/jest.integration.config.js","line":11,"offset":12}}
{"seq":97,"type":"request","command":"references","arguments":{"file":"@PROJECT_ROOT@/packages/kbn-cli-dev-mode/jest.integration.config.js","line":11,"offset":12}}
{"seq":98,"type":"request","command":"updateOpen","arguments":{"changedFiles":[],"closedFiles":["@PROJECT_ROOT@/packages/kbn-telemetry-tools/jest.config.js"],"openFiles":[]}}
{"seq":99,"type":"request","command":"updateOpen","arguments":{"changedFiles":[],"closedFiles":[],"openFiles":[{"file":"@PROJECT_ROOT@/x-pack/test/upgrade_assistant_integration/config.js","projectRootPath":"@PROJECT_ROOT@"}]}}

Repro steps

#!/bin/bash

git clone https://github.com/elastic/kibana --recurse-submodules
git -C "./kibana" reset --hard 48f6f945bef098cd5ef667b7e6a01dd2182b6698
downloadUrl=$(curl -s "https://typescript.visualstudio.com/TypeScript/_apis/build/builds/163602/artifacts?artifactName=RepoResults14&api-version=7.0" | jq -r ".resource.downloadUrl")
wget -O RepoResults14.zip "$downloadUrl"
unzip -p RepoResults14.zip RepoResults14/elastic.kibana.replay.txt > elastic.kibana.replay.txt
npm install --no-save @typescript/server-replay

To run the repro:

# `npx tsreplay --help` to learn about helpful switches for debugging, logging, etc.
npx tsreplay ./kibana ./elastic.kibana.replay.txt <PATH_TO_tsserver.js>

Server exited prematurely with code unknown and signal SIGABRT

Server exited prematurely with code unknown and signal SIGABRT

Affected repos

withfig/autocomplete Raw error text: RepoResults10/withfig.autocomplete.rawError.txt in the artifact folder
Replay commands: RepoResults10/withfig.autocomplete.replay.txt in the artifact folder

Last few requests

{"seq":274,"type":"request","command":"completionEntryDetails","arguments":{"file":"@PROJECT_ROOT@/src/ykman.ts","line":1137,"offset":19,"entryNames":["configModeGenerator"]}}
{"seq":275,"type":"request","command":"definitionAndBoundSpan","arguments":{"file":"@PROJECT_ROOT@/src/ykman.ts","line":1174,"offset":23}}
{"seq":276,"type":"request","command":"completionInfo","arguments":{"file":"@PROJECT_ROOT@/src/ykman.ts","line":1183,"offset":29,"includeExternalModuleExports":false,"triggerKind":2,"triggerCharacter":"\""}}
{"seq":277,"type":"request","command":"references","arguments":{"file":"@PROJECT_ROOT@/src/ykman.ts","line":1252,"offset":15}}

Repro steps

#!/bin/bash

git clone https://github.com/withfig/autocomplete --recurse-submodules
git -C "./autocomplete" reset --hard 35977c9b68cecd1755b6c9c09d85f8d567ddedb9
pnpm --dir "./autocomplete" install --no-frozen-lockfile --prefer-offline --ignore-scripts --reporter=silent
downloadUrl=$(curl -s "https://typescript.visualstudio.com/TypeScript/_apis/build/builds/163602/artifacts?artifactName=RepoResults10&api-version=7.0" | jq -r ".resource.downloadUrl")
wget -O RepoResults10.zip "$downloadUrl"
unzip -p RepoResults10.zip RepoResults10/withfig.autocomplete.replay.txt > withfig.autocomplete.replay.txt
npm install --no-save @typescript/server-replay

To run the repro:

# `npx tsreplay --help` to learn about helpful switches for debugging, logging, etc.
npx tsreplay ./autocomplete ./withfig.autocomplete.replay.txt <PATH_TO_tsserver.js>

@typescript-bot
Copy link
Collaborator

@rbuckton Here are the results of running the top 400 repos with tsc comparing main and refs/pull/59992/merge:

Everything looks good!

@rbuckton
Copy link
Member Author

@typescript-bot perf test

@typescript-bot
Copy link
Collaborator

typescript-bot commented Sep 18, 2024

Starting jobs; this comment will be updated as builds start and complete.

Command Status Results
perf test ✅ Started 👀 Results

@typescript-bot
Copy link
Collaborator

@rbuckton
The results of the perf run you requested are in!

Here they are:

tsc

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
Compiler-Unions - node (v18.15.0, x64)
Errors 30 30 ~ ~ ~ p=1.000 n=6
Symbols 62,153 62,153 ~ ~ ~ p=1.000 n=6
Types 50,242 50,242 ~ ~ ~ p=1.000 n=6
Memory used 194,850k (± 0.90%) 264,879k (± 0.72%) 🔻+70,030k (+35.94%) 263,605k 267,413k p=0.005 n=6
Parse Time 1.57s (± 1.12%) 2.11s (± 1.35%) 🔻+0.54s (+34.72%) 2.06s 2.14s p=0.004 n=6
Bind Time 0.85s (± 1.61%) 1.32s (± 0.48%) 🔻+0.47s (+54.39%) 1.31s 1.33s p=0.004 n=6
Check Time 11.38s (± 0.20%) 13.89s (± 0.53%) 🔻+2.51s (+22.06%) 13.76s 13.96s p=0.005 n=6
Emit Time 3.24s (± 0.45%) 4.84s (± 0.95%) 🔻+1.60s (+49.36%) 4.76s 4.88s p=0.005 n=6
Total Time 17.04s (± 0.29%) 22.16s (± 0.58%) 🔻+5.12s (+30.02%) 21.93s 22.28s p=0.005 n=6
angular-1 - node (v18.15.0, x64)
Errors 7 7 ~ ~ ~ p=1.000 n=6
Symbols 945,753 945,753 ~ ~ ~ p=1.000 n=6
Types 410,067 410,067 ~ ~ ~ p=1.000 n=6
Memory used 1,222,749k (± 0.01%) 1,670,645k (± 0.00%) 🔻+447,896k (+36.63%) 1,670,595k 1,670,728k p=0.005 n=6
Parse Time 7.89s (± 0.74%) 11.92s (± 0.59%) 🔻+4.04s (+51.24%) 11.85s 12.04s p=0.005 n=6
Bind Time 2.21s (± 0.40%) 4.04s (± 0.29%) 🔻+1.83s (+82.73%) 4.02s 4.05s p=0.005 n=6
Check Time 36.22s (± 0.39%) 49.78s (± 0.38%) 🔻+13.55s (+37.42%) 49.51s 50.08s p=0.005 n=6
Emit Time 17.88s (± 0.51%) 26.06s (± 0.49%) 🔻+8.18s (+45.75%) 25.87s 26.18s p=0.005 n=6
Total Time 64.19s (± 0.22%) 91.80s (± 0.34%) 🔻+27.61s (+43.02%) 91.33s 92.25s p=0.005 n=6
mui-docs - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 2,529,156 2,529,156 ~ ~ ~ p=1.000 n=6
Types 936,017 936,017 ~ ~ ~ p=1.000 n=6
Memory used 2,364,302k (± 0.00%) 2,745,907k (± 0.01%) 🔻+381,605k (+16.14%) 2,745,531k 2,746,195k p=0.005 n=6
Parse Time 11.16s (± 0.29%) 15.08s (± 1.60%) 🔻+3.92s (+35.14%) 14.87s 15.56s p=0.005 n=6
Bind Time 2.61s (± 0.40%) 4.55s (± 0.32%) 🔻+1.94s (+74.49%) 4.52s 4.56s p=0.004 n=6
Check Time 86.33s (± 0.70%) 106.45s (± 2.04%) 🔻+20.12s (+23.30%) 104.84s 110.25s p=0.005 n=6
Emit Time 0.33s (± 1.24%) 0.34s (± 3.42%) 🔻+0.01s (+ 4.06%) 0.33s 0.36s p=0.025 n=6
Total Time 100.43s (± 0.59%) 126.42s (± 1.65%) 🔻+25.99s (+25.88%) 124.79s 130.15s p=0.005 n=6
self-build-src - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 1,245,952 1,428,767 🔻+182,815 (+14.67%) ~ ~ p=0.001 n=6
Types 264,213 277,448 🔻+13,235 (+ 5.01%) ~ ~ p=0.001 n=6
Memory used 2,397,820k (± 0.03%) 3,388,854k (± 0.01%) 🔻+991,034k (+41.33%) 3,388,250k 3,389,346k p=0.005 n=6
Parse Time 6.11s (± 0.59%) 10.28s (± 0.42%) 🔻+4.16s (+68.06%) 10.22s 10.33s p=0.005 n=6
Bind Time 2.26s (± 0.78%) 4.30s (± 1.04%) 🔻+2.04s (+90.07%) 4.24s 4.35s p=0.005 n=6
Check Time 41.39s (± 0.52%) 57.04s (± 0.72%) 🔻+15.66s (+37.83%) 56.58s 57.47s p=0.005 n=6
Emit Time 3.56s (± 2.29%) 5.04s (± 0.63%) 🔻+1.48s (+41.53%) 4.99s 5.08s p=0.005 n=6
Total Time 53.34s (± 0.54%) 76.67s (± 0.53%) 🔻+23.33s (+43.75%) 76.22s 77.09s p=0.005 n=6
self-build-src-public-api - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 1,245,952 1,428,767 🔻+182,815 (+14.67%) ~ ~ p=0.001 n=6
Types 264,213 277,448 🔻+13,235 (+ 5.01%) ~ ~ p=0.001 n=6
Memory used 2,472,614k (± 0.02%) 3,477,928k (± 0.01%) 🔻+1,005,314k (+40.66%) 3,477,333k 3,478,364k p=0.005 n=6
Parse Time 7.89s (± 0.44%) 13.00s (± 0.39%) 🔻+5.11s (+64.79%) 12.92s 13.08s p=0.005 n=6
Bind Time 2.52s (± 0.65%) 5.28s (± 0.56%) 🔻+2.76s (+109.25%) 5.25s 5.32s p=0.005 n=6
Check Time 51.26s (± 0.83%) 70.59s (± 0.72%) 🔻+19.33s (+37.70%) 69.84s 71.21s p=0.005 n=6
Emit Time 4.35s (± 1.74%) 6.28s (± 3.26%) 🔻+1.93s (+44.33%) 6.11s 6.68s p=0.005 n=6
Total Time 66.02s (± 0.58%) 95.15s (± 0.40%) 🔻+29.13s (+44.11%) 94.55s 95.59s p=0.005 n=6
self-compiler - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 259,885 331,208 🔻+71,323 (+27.44%) ~ ~ p=0.001 n=6
Types 106,140 119,368 🔻+13,228 (+12.46%) ~ ~ p=0.001 n=6
Memory used 435,589k (± 0.02%) 680,131k (± 0.01%) 🔻+244,543k (+56.14%) 680,073k 680,256k p=0.005 n=6
Parse Time 3.41s (± 0.49%) 5.20s (± 1.10%) 🔻+1.79s (+52.59%) 5.16s 5.31s p=0.005 n=6
Bind Time 1.29s (± 1.26%) 2.33s (± 1.21%) 🔻+1.04s (+80.15%) 2.29s 2.37s p=0.004 n=6
Check Time 18.16s (± 0.39%) 26.83s (± 0.39%) 🔻+8.68s (+47.80%) 26.74s 26.96s p=0.005 n=6
Emit Time 1.53s (± 2.19%) 2.72s (± 0.86%) 🔻+1.19s (+78.00%) 2.69s 2.75s p=0.005 n=6
Total Time 24.39s (± 0.37%) 37.09s (± 0.18%) 🔻+12.70s (+52.09%) 36.99s 37.18s p=0.005 n=6
ts-pre-modules - node (v18.15.0, x64)
Errors 68 68 ~ ~ ~ p=1.000 n=6
Symbols 225,018 225,018 ~ ~ ~ p=1.000 n=6
Types 94,249 94,249 ~ ~ ~ p=1.000 n=6
Memory used 370,253k (± 0.02%) 495,011k (± 0.01%) 🔻+124,758k (+33.70%) 494,946k 495,052k p=0.005 n=6
Parse Time 3.44s (± 1.21%) 4.88s (± 0.90%) 🔻+1.44s (+41.69%) 4.82s 4.95s p=0.005 n=6
Bind Time 1.95s (± 1.07%) 2.94s (± 0.91%) 🔻+0.99s (+50.51%) 2.90s 2.97s p=0.005 n=6
Check Time 19.42s (± 0.50%) 26.01s (± 0.11%) 🔻+6.58s (+33.90%) 25.96s 26.04s p=0.005 n=6
Emit Time 0.00s 0.00s ~ ~ ~ p=1.000 n=6
Total Time 24.81s (± 0.32%) 33.82s (± 0.08%) 🔻+9.01s (+36.31%) 33.79s 33.87s p=0.005 n=6
vscode - node (v18.15.0, x64)
Errors 1 0 ~ ~ ~ p=1.000 n=6+0
Symbols 3,074,141 0 ~ ~ ~ p=1.000 n=6+0
Types 1,060,933 0 ~ ~ ~ p=1.000 n=6+0
Memory used 3,177,732k (± 0.00%) 0k ~ ~ ~ p=1.000 n=6+0
Parse Time 17.15s (± 0.25%) 0s ~ ~ ~ p=1.000 n=6+0
Bind Time 5.33s (± 0.83%) 0s ~ ~ ~ p=1.000 n=6+0
Check Time 99.32s (± 0.26%) 0s ~ ~ ~ p=1.000 n=6+0
Emit Time 27.18s (± 0.28%) 0s ~ ~ ~ p=1.000 n=6+0
Total Time 148.98s (± 0.19%) 0s ~ ~ ~ p=1.000 n=6+0
webpack - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 277,157 277,157 ~ ~ ~ p=1.000 n=6
Types 112,949 112,949 ~ ~ ~ p=1.000 n=6
Memory used 426,931k (± 0.02%) 539,845k (± 0.02%) 🔻+112,914k (+26.45%) 539,746k 539,977k p=0.005 n=6
Parse Time 3.95s (± 0.69%) 5.29s (± 0.25%) 🔻+1.34s (+33.91%) 5.28s 5.31s p=0.004 n=6
Bind Time 1.72s (± 1.36%) 2.71s (± 0.31%) 🔻+1.00s (+58.16%) 2.71s 2.73s p=0.004 n=6
Check Time 17.63s (± 0.46%) 22.92s (± 0.38%) 🔻+5.28s (+29.95%) 22.80s 23.00s p=0.005 n=6
Emit Time 0.00s 0.00s ~ ~ ~ p=1.000 n=6
Total Time 23.30s (± 0.26%) 30.92s (± 0.24%) 🔻+7.62s (+32.68%) 30.83s 31.00s p=0.005 n=6
xstate-main - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 531,594 531,594 ~ ~ ~ p=1.000 n=6
Types 181,677 181,677 ~ ~ ~ p=1.000 n=6
Memory used 463,716k (± 0.02%) 548,893k (± 0.01%) 🔻+85,177k (+18.37%) 548,843k 548,929k p=0.005 n=6
Parse Time 2.60s (± 0.58%) 3.60s (± 0.48%) 🔻+0.99s (+38.22%) 3.58s 3.62s p=0.005 n=6
Bind Time 0.93s 1.51s (± 0.50%) 🔻+0.58s (+62.19%) 1.50s 1.52s p=0.003 n=6
Check Time 15.40s (± 0.39%) 17.98s (± 0.26%) 🔻+2.57s (+16.68%) 17.91s 18.01s p=0.005 n=6
Emit Time 0.00s 0.00s ~ ~ ~ p=1.000 n=6
Total Time 18.94s (± 0.32%) 23.08s (± 0.26%) 🔻+4.15s (+21.91%) 23.00s 23.14s p=0.005 n=6
System info unknown
Hosts
  • node (v18.15.0, x64)
Scenarios
  • Compiler-Unions - node (v18.15.0, x64)
  • angular-1 - node (v18.15.0, x64)
  • mui-docs - node (v18.15.0, x64)
  • self-build-src - node (v18.15.0, x64)
  • self-build-src-public-api - node (v18.15.0, x64)
  • self-compiler - node (v18.15.0, x64)
  • ts-pre-modules - node (v18.15.0, x64)
  • vscode - node (v18.15.0, x64)
  • webpack - node (v18.15.0, x64)
  • xstate-main - node (v18.15.0, x64)
Benchmark Name Iterations
Current pr 6
Baseline baseline 6

tsserver

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
Compiler-UnionsTSServer - node (v18.15.0, x64)
Req 1 - updateOpen 2,293ms (± 0.22%) 3,148ms (± 0.29%) 🔻+855ms (+37.29%) 3,134ms 3,158ms p=0.005 n=6
Req 2 - geterr 5,177ms (± 0.33%) 6,572ms (± 0.41%) 🔻+1,396ms (+26.96%) 6,551ms 6,623ms p=0.005 n=6
Req 3 - references 262ms (± 0.20%) 391ms (± 0.67%) 🔻+129ms (+49.05%) 387ms 394ms p=0.004 n=6
Req 4 - navto 227ms (± 0.60%) 288ms (± 1.72%) 🔻+61ms (+26.99%) 283ms 293ms p=0.004 n=6
Req 5 - completionInfo count 1,357 1,357 ~ ~ ~ p=1.000 n=6
Req 5 - completionInfo 83ms (± 6.68%) 81ms (± 0.63%) ~ 81ms 82ms p=0.365 n=6
CompilerTSServer - node (v18.15.0, x64)
Req 1 - updateOpen 2,401ms (± 1.03%) 3,341ms (± 0.39%) 🔻+940ms (+39.14%) 3,327ms 3,357ms p=0.005 n=6
Req 2 - geterr 3,920ms (± 0.60%) 5,042ms (± 1.36%) 🔻+1,122ms (+28.63%) 4,907ms 5,095ms p=0.005 n=6
Req 3 - references 274ms (± 1.47%) 403ms (± 3.11%) 🔻+129ms (+47.23%) 387ms 419ms p=0.005 n=6
Req 4 - navto 232ms (± 2.85%) 299ms (± 2.81%) 🔻+67ms (+29.09%) 289ms 307ms p=0.005 n=6
Req 5 - completionInfo count 1,519 1,519 ~ ~ ~ p=1.000 n=6
Req 5 - completionInfo 74ms (± 7.87%) 80ms (± 3.31%) ~ 77ms 83ms p=0.064 n=6
xstate-main-1-tsserver - node (v18.15.0, x64)
Req 1 - updateOpen 5,181ms (± 0.25%) 7,148ms (± 2.35%) 🔻+1,967ms (+37.97%) 7,040ms 7,470ms p=0.005 n=6
Req 2 - geterr 1,131ms (± 1.25%) 1,263ms (± 0.92%) 🔻+132ms (+11.63%) 1,250ms 1,277ms p=0.005 n=6
Req 3 - references 87ms (± 2.49%) 106ms (± 3.04%) 🔻+19ms (+21.73%) 104ms 112ms p=0.004 n=6
Req 4 - navto 441ms (± 0.12%) 492ms (± 3.29%) 🔻+51ms (+11.56%) 469ms 511ms p=0.004 n=6
Req 5 - completionInfo count 3,444 3,444 ~ ~ ~ p=1.000 n=6
Req 5 - completionInfo 844ms (± 0.91%) 892ms (± 0.89%) 🔻+48ms (+ 5.65%) 880ms 902ms p=0.005 n=6
System info unknown
Hosts
  • node (v18.15.0, x64)
Scenarios
  • CompilerTSServer - node (v18.15.0, x64)
  • Compiler-UnionsTSServer - node (v18.15.0, x64)
  • xstate-main-1-tsserver - node (v18.15.0, x64)
Benchmark Name Iterations
Current pr 6
Baseline baseline 6

startup

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
tsc-startup - node (v18.15.0, x64)
Execution time 158.56ms (± 0.19%) 176.19ms (± 0.16%) 🔻+17.63ms (+11.12%) 175.13ms 179.84ms p=0.000 n=600
tsserver-startup - node (v18.15.0, x64)
Execution time 231.96ms (± 0.12%) 248.54ms (± 0.13%) 🔻+16.58ms (+ 7.15%) 247.30ms 254.45ms p=0.000 n=600
tsserverlibrary-startup - node (v18.15.0, x64)
Execution time 227.82ms (± 0.16%) 243.73ms (± 0.15%) 🔻+15.91ms (+ 6.98%) 242.52ms 250.14ms p=0.000 n=600
typescript-startup - node (v18.15.0, x64)
Execution time 227.03ms (± 0.15%) 242.86ms (± 0.14%) 🔻+15.83ms (+ 6.97%) 241.54ms 248.37ms p=0.000 n=600
System info unknown
Hosts
  • node (v18.15.0, x64)
Scenarios
  • tsc-startup - node (v18.15.0, x64)
  • tsserver-startup - node (v18.15.0, x64)
  • tsserverlibrary-startup - node (v18.15.0, x64)
  • typescript-startup - node (v18.15.0, x64)
Benchmark Name Iterations
Current pr 6
Baseline baseline 6

Developer Information:

Download Benchmarks

@rbuckton
Copy link
Member Author

Being less aggressive with respect to optional chaining in the facade accessors didn't seem to have much of an impact. I suspect the biggest impact is that the per-node constructors are resulting in far more megamorphic ICs. I might be able to address this by duplicating all of the accessors on Node on each of the individual subtypes so that the accessors are monomorphic. I'll push up an experimental commit to test that this afternoon, but I think the major perf improvements will come from migrating the internals to use the monomorphic slim AST.

@rbuckton
Copy link
Member Author

@typescript-bot perf test

@typescript-bot
Copy link
Collaborator

typescript-bot commented Sep 18, 2024

Starting jobs; this comment will be updated as builds start and complete.

Command Status Results
perf test ✅ Started 👀 Results

@typescript-bot
Copy link
Collaborator

@rbuckton
The results of the perf run you requested are in!

Here they are:

tsc

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
Compiler-Unions - node (v18.15.0, x64)
Errors 30 30 ~ ~ ~ p=1.000 n=6
Symbols 62,153 62,153 ~ ~ ~ p=1.000 n=6
Types 50,242 50,242 ~ ~ ~ p=1.000 n=6
Memory used 193,603k (± 0.94%) 265,714k (± 0.58%) 🔻+72,111k (+37.25%) 264,930k 268,878k p=0.005 n=6
Parse Time 1.57s (± 0.94%) 2.15s (± 0.38%) 🔻+0.58s (+37.01%) 2.14s 2.16s p=0.005 n=6
Bind Time 0.85s (± 0.96%) 1.39s (± 1.06%) 🔻+0.54s (+63.09%) 1.37s 1.41s p=0.005 n=6
Check Time 11.37s (± 0.65%) 14.36s (± 0.36%) 🔻+2.99s (+26.32%) 14.27s 14.42s p=0.005 n=6
Emit Time 3.23s (± 0.69%) 5.06s (± 3.15%) 🔻+1.83s (+56.73%) 4.99s 5.39s p=0.005 n=6
Total Time 17.02s (± 0.45%) 22.97s (± 0.76%) 🔻+5.95s (+34.92%) 22.78s 23.30s p=0.005 n=6
angular-1 - node (v18.15.0, x64)
Errors 7 7 ~ ~ ~ p=1.000 n=6
Symbols 945,753 945,753 ~ ~ ~ p=1.000 n=6
Types 410,067 410,067 ~ ~ ~ p=1.000 n=6
Memory used 1,222,741k (± 0.00%) 1,672,763k (± 0.00%) 🔻+450,023k (+36.80%) 1,672,723k 1,672,804k p=0.005 n=6
Parse Time 6.67s (± 0.44%) 10.24s (± 0.51%) 🔻+3.58s (+53.64%) 10.18s 10.30s p=0.005 n=6
Bind Time 1.86s (± 0.28%) 3.51s (± 0.39%) 🔻+1.65s (+88.64%) 3.50s 3.53s p=0.004 n=6
Check Time 31.19s (± 0.22%) 45.35s (± 0.48%) 🔻+14.16s (+45.40%) 45.15s 45.66s p=0.005 n=6
Emit Time 15.08s (± 0.31%) 22.79s (± 0.74%) 🔻+7.71s (+51.15%) 22.53s 22.95s p=0.005 n=6
Total Time 54.80s (± 0.19%) 81.90s (± 0.22%) 🔻+27.10s (+49.46%) 81.77s 82.25s p=0.005 n=6
mui-docs - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 2,529,156 2,529,156 ~ ~ ~ p=1.000 n=6
Types 936,017 936,017 ~ ~ ~ p=1.000 n=6
Memory used 2,364,315k (± 0.00%) 2,747,791k (± 0.01%) 🔻+383,476k (+16.22%) 2,747,489k 2,747,957k p=0.005 n=6
Parse Time 11.15s (± 0.32%) 15.37s (± 0.71%) 🔻+4.22s (+37.86%) 15.19s 15.52s p=0.005 n=6
Bind Time 2.60s (± 0.40%) 4.62s (± 0.29%) 🔻+2.02s (+77.42%) 4.60s 4.64s p=0.005 n=6
Check Time 86.35s (± 0.39%) 106.59s (± 0.73%) 🔻+20.24s (+23.44%) 105.87s 107.93s p=0.005 n=6
Emit Time 0.33s (± 1.68%) 0.34s (± 1.19%) 🔻+0.02s (+ 5.13%) 0.34s 0.35s p=0.003 n=6
Total Time 100.43s (± 0.32%) 126.93s (± 0.57%) 🔻+26.50s (+26.38%) 126.19s 128.08s p=0.005 n=6
self-build-src - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 1,245,952 1,455,886 🔻+209,934 (+16.85%) ~ ~ p=0.001 n=6
Types 264,213 277,450 🔻+13,237 (+ 5.01%) ~ ~ p=0.001 n=6
Memory used 2,398,064k (± 0.04%) 3,483,558k (± 0.02%) 🔻+1,085,494k (+45.27%) 3,482,941k 3,484,290k p=0.005 n=6
Parse Time 6.12s (± 1.08%) 10.60s (± 0.30%) 🔻+4.48s (+73.11%) 10.57s 10.66s p=0.005 n=6
Bind Time 2.27s (± 0.77%) 4.46s (± 0.46%) 🔻+2.19s (+96.69%) 4.43s 4.49s p=0.005 n=6
Check Time 41.07s (± 0.33%) 59.74s (± 0.60%) 🔻+18.68s (+45.48%) 59.27s 60.17s p=0.005 n=6
Emit Time 3.65s (± 3.29%) 5.42s (± 5.13%) 🔻+1.77s (+48.58%) 5.21s 5.82s p=0.005 n=6
Total Time 53.13s (± 0.36%) 80.24s (± 0.34%) 🔻+27.11s (+51.02%) 79.73s 80.47s p=0.005 n=6
self-build-src-public-api - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 1,245,952 1,455,886 🔻+209,934 (+16.85%) ~ ~ p=0.001 n=6
Types 264,213 277,450 🔻+13,237 (+ 5.01%) ~ ~ p=0.001 n=6
Memory used 2,472,200k (± 0.04%) 3,570,912k (± 0.01%) 🔻+1,098,711k (+44.44%) 3,570,533k 3,571,320k p=0.005 n=6
Parse Time 7.84s (± 0.67%) 13.35s (± 0.54%) 🔻+5.50s (+70.14%) 13.28s 13.47s p=0.005 n=6
Bind Time 2.54s (± 0.35%) 5.47s (± 1.05%) 🔻+2.93s (+115.42%) 5.39s 5.54s p=0.005 n=6
Check Time 51.55s (± 0.41%) 74.03s (± 0.64%) 🔻+22.47s (+43.59%) 73.10s 74.36s p=0.005 n=6
Emit Time 4.44s (± 1.45%) 6.55s (± 3.87%) 🔻+2.11s (+47.60%) 6.40s 7.06s p=0.005 n=6
Total Time 66.38s (± 0.25%) 99.40s (± 0.23%) 🔻+33.02s (+49.75%) 99.01s 99.65s p=0.005 n=6
self-compiler - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 259,885 334,435 🔻+74,550 (+28.69%) ~ ~ p=0.001 n=6
Types 106,140 119,370 🔻+13,230 (+12.46%) ~ ~ p=0.001 n=6
Memory used 435,627k (± 0.01%) 696,228k (± 0.02%) 🔻+260,602k (+59.82%) 696,069k 696,392k p=0.005 n=6
Parse Time 3.42s (± 0.44%) 5.33s (± 0.56%) 🔻+1.90s (+55.57%) 5.30s 5.38s p=0.005 n=6
Bind Time 1.29s (± 1.17%) 2.47s (± 0.59%) 🔻+1.19s (+92.10%) 2.45s 2.49s p=0.005 n=6
Check Time 18.18s (± 0.29%) 28.34s (± 0.35%) 🔻+10.15s (+55.85%) 28.17s 28.48s p=0.005 n=6
Emit Time 1.53s (± 1.35%) 2.91s (± 0.92%) 🔻+1.38s (+90.61%) 2.86s 2.94s p=0.005 n=6
Total Time 24.42s (± 0.24%) 39.04s (± 0.29%) 🔻+14.63s (+59.90%) 38.91s 39.24s p=0.005 n=6
ts-pre-modules - node (v18.15.0, x64)
Errors 68 68 ~ ~ ~ p=1.000 n=6
Symbols 225,018 225,018 ~ ~ ~ p=1.000 n=6
Types 94,249 94,249 ~ ~ ~ p=1.000 n=6
Memory used 370,263k (± 0.02%) 496,547k (± 0.00%) 🔻+126,284k (+34.11%) 496,524k 496,574k p=0.005 n=6
Parse Time 2.28s (± 0.33%) 3.32s (± 0.54%) 🔻+1.04s (+45.72%) 3.30s 3.35s p=0.005 n=6
Bind Time 1.30s (± 2.15%) 2.04s (± 0.59%) 🔻+0.74s (+56.78%) 2.03s 2.06s p=0.004 n=6
Check Time 13.36s (± 0.25%) 18.68s (± 0.21%) 🔻+5.31s (+39.77%) 18.61s 18.72s p=0.005 n=6
Emit Time 0.00s 0.00s ~ ~ ~ p=1.000 n=6
Total Time 16.94s (± 0.37%) 24.04s (± 0.22%) 🔻+7.10s (+41.92%) 23.96s 24.11s p=0.005 n=6
vscode - node (v18.15.0, x64)
Errors 1 0 ~ ~ ~ p=1.000 n=6+0
Symbols 3,077,145 0 ~ ~ ~ p=1.000 n=6+0
Types 1,061,608 0 ~ ~ ~ p=1.000 n=6+0
Memory used 3,179,554k (± 0.00%) 0k ~ ~ ~ p=1.000 n=6+0
Parse Time 17.20s (± 0.42%) 0s ~ ~ ~ p=1.000 n=6+0
Bind Time 5.30s (± 0.28%) 0s ~ ~ ~ p=1.000 n=6+0
Check Time 99.15s (± 0.43%) 0s ~ ~ ~ p=1.000 n=6+0
Emit Time 27.18s (± 0.72%) 0s ~ ~ ~ p=1.000 n=6+0
Total Time 148.83s (± 0.34%) 0s ~ ~ ~ p=1.000 n=6+0
webpack - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 277,157 277,157 ~ ~ ~ p=1.000 n=6
Types 112,949 112,949 ~ ~ ~ p=1.000 n=6
Memory used 427,038k (± 0.01%) 541,537k (± 0.01%) 🔻+114,499k (+26.81%) 541,398k 541,582k p=0.005 n=6
Parse Time 4.90s (± 0.33%) 6.83s (± 0.45%) 🔻+1.93s (+39.33%) 6.79s 6.88s p=0.005 n=6
Bind Time 2.13s (± 0.91%) 3.49s (± 0.15%) 🔻+1.36s (+63.82%) 3.48s 3.49s p=0.004 n=6
Check Time 21.89s (± 0.30%) 29.51s (± 0.47%) 🔻+7.62s (+34.83%) 29.35s 29.69s p=0.005 n=6
Emit Time 0.00s 0.00s ~ ~ ~ p=1.000 n=6
Total Time 28.92s (± 0.29%) 39.83s (± 0.38%) 🔻+10.91s (+37.72%) 39.65s 40.03s p=0.005 n=6
xstate-main - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 531,594 531,594 ~ ~ ~ p=1.000 n=6
Types 181,677 181,677 ~ ~ ~ p=1.000 n=6
Memory used 463,730k (± 0.01%) 550,468k (± 0.01%) 🔻+86,738k (+18.70%) 550,439k 550,507k p=0.005 n=6
Parse Time 3.12s (± 1.06%) 4.35s (± 0.58%) 🔻+1.23s (+39.35%) 4.31s 4.38s p=0.005 n=6
Bind Time 1.11s (± 0.37%) 1.87s (± 0.94%) 🔻+0.75s (+67.92%) 1.84s 1.89s p=0.004 n=6
Check Time 18.27s (± 0.13%) 21.65s (± 0.21%) 🔻+3.38s (+18.52%) 21.61s 21.73s p=0.005 n=6
Emit Time 0.00s 0.00s ~ ~ ~ p=1.000 n=6
Total Time 22.50s (± 0.21%) 27.86s (± 0.20%) 🔻+5.36s (+23.85%) 27.80s 27.96s p=0.005 n=6
System info unknown
Hosts
  • node (v18.15.0, x64)
Scenarios
  • Compiler-Unions - node (v18.15.0, x64)
  • angular-1 - node (v18.15.0, x64)
  • mui-docs - node (v18.15.0, x64)
  • self-build-src - node (v18.15.0, x64)
  • self-build-src-public-api - node (v18.15.0, x64)
  • self-compiler - node (v18.15.0, x64)
  • ts-pre-modules - node (v18.15.0, x64)
  • vscode - node (v18.15.0, x64)
  • webpack - node (v18.15.0, x64)
  • xstate-main - node (v18.15.0, x64)
Benchmark Name Iterations
Current pr 6
Baseline baseline 6

tsserver

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
Compiler-UnionsTSServer - node (v18.15.0, x64)
Req 1 - updateOpen 2,294ms (± 0.93%) 3,253ms (± 0.10%) 🔻+959ms (+41.82%) 3,248ms 3,257ms p=0.005 n=6
Req 2 - geterr 5,161ms (± 0.29%) 6,743ms (± 0.51%) 🔻+1,582ms (+30.65%) 6,694ms 6,779ms p=0.005 n=6
Req 3 - references 264ms (± 1.67%) 388ms (± 3.81%) 🔻+125ms (+47.28%) 375ms 407ms p=0.005 n=6
Req 4 - navto 227ms (± 0.65%) 293ms (± 0.14%) 🔻+66ms (+28.91%) 292ms 293ms p=0.004 n=6
Req 5 - completionInfo count 1,357 1,357 ~ ~ ~ p=1.000 n=6
Req 5 - completionInfo 80ms (± 5.91%) 86ms (± 7.20%) ~ 82ms 94ms p=0.121 n=6
CompilerTSServer - node (v18.15.0, x64)
Req 1 - updateOpen 2,404ms (± 0.85%) 3,434ms (± 0.15%) 🔻+1,030ms (+42.87%) 3,430ms 3,442ms p=0.005 n=6
Req 2 - geterr 3,912ms (± 0.20%) 5,339ms (± 0.40%) 🔻+1,427ms (+36.48%) 5,320ms 5,378ms p=0.005 n=6
Req 3 - references 274ms (± 0.15%) 422ms (± 0.92%) 🔻+148ms (+54.05%) 414ms 424ms p=0.003 n=6
Req 4 - navto 227ms (± 0.33%) 291ms (± 2.59%) 🔻+64ms (+28.25%) 282ms 305ms p=0.004 n=6
Req 5 - completionInfo count 1,519 1,519 ~ ~ ~ p=1.000 n=6
Req 5 - completionInfo 78ms (± 8.13%) 82ms (± 7.76%) ~ 78ms 94ms p=0.226 n=6
xstate-main-1-tsserver - node (v18.15.0, x64)
Req 1 - updateOpen 6,366ms (± 4.95%) 8,652ms (± 0.32%) 🔻+2,286ms (+35.91%) 8,619ms 8,685ms p=0.005 n=6
Req 2 - geterr 1,683ms (± 1.44%) 1,732ms (±10.96%) ~ 1,549ms 1,922ms p=1.000 n=6
Req 3 - references 129ms (± 2.79%) 154ms (± 8.96%) 🔻+25ms (+18.94%) 127ms 167ms p=0.024 n=6
Req 4 - navto 603ms (± 1.30%) 710ms (± 6.62%) 🔻+107ms (+17.75%) 615ms 741ms p=0.005 n=6
Req 5 - completionInfo count 3,444 3,444 ~ ~ ~ p=1.000 n=6
Req 5 - completionInfo 1,270ms (± 0.51%) 1,285ms (± 8.77%) ~ 1,055ms 1,343ms p=0.066 n=6
System info unknown
Hosts
  • node (v18.15.0, x64)
Scenarios
  • CompilerTSServer - node (v18.15.0, x64)
  • Compiler-UnionsTSServer - node (v18.15.0, x64)
  • xstate-main-1-tsserver - node (v18.15.0, x64)
Benchmark Name Iterations
Current pr 6
Baseline baseline 6

startup

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
tsc-startup - node (v18.15.0, x64)
Execution time 158.16ms (± 0.17%) 180.07ms (± 0.17%) 🔻+21.92ms (+13.86%) 179.06ms 184.18ms p=0.000 n=600
tsserver-startup - node (v18.15.0, x64)
Execution time 232.33ms (± 0.15%) 254.84ms (± 0.13%) 🔻+22.51ms (+ 9.69%) 253.52ms 260.12ms p=0.000 n=600
tsserverlibrary-startup - node (v18.15.0, x64)
Execution time 227.46ms (± 0.14%) 248.16ms (± 0.13%) 🔻+20.69ms (+ 9.10%) 246.67ms 251.64ms p=0.000 n=600
typescript-startup - node (v18.15.0, x64)
Execution time 277.16ms (± 0.28%) 304.16ms (± 0.32%) 🔻+27.00ms (+ 9.74%) 295.62ms 307.79ms p=0.000 n=600
System info unknown
Hosts
  • node (v18.15.0, x64)
Scenarios
  • tsc-startup - node (v18.15.0, x64)
  • tsserver-startup - node (v18.15.0, x64)
  • tsserverlibrary-startup - node (v18.15.0, x64)
  • typescript-startup - node (v18.15.0, x64)
Benchmark Name Iterations
Current pr 6
Baseline baseline 6

Developer Information:

Download Benchmarks

@rbuckton
Copy link
Member Author

@typescript-bot perf test

@typescript-bot
Copy link
Collaborator

typescript-bot commented Sep 18, 2024

Starting jobs; this comment will be updated as builds start and complete.

Command Status Results
perf test ✅ Started 👀 Results

@typescript-bot
Copy link
Collaborator

@rbuckton
The results of the perf run you requested are in!

Here they are:

tsc

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
Compiler-Unions - node (v18.15.0, x64)
Errors 30 30 ~ ~ ~ p=1.000 n=6
Symbols 62,153 62,153 ~ ~ ~ p=1.000 n=6
Types 50,242 50,242 ~ ~ ~ p=1.000 n=6
Memory used 193,282k (± 0.74%) 270,314k (± 0.57%) 🔻+77,032k (+39.85%) 269,464k 273,439k p=0.005 n=6
Parse Time 1.56s (± 1.24%) 1.66s (± 0.45%) 🔻+0.10s (+ 6.40%) 1.65s 1.67s p=0.004 n=6
Bind Time 0.86s (± 0.73%) 1.55s (± 0.75%) 🔻+0.69s (+80.43%) 1.54s 1.57s p=0.004 n=6
Check Time 11.40s (± 0.14%) 14.16s (± 1.58%) 🔻+2.77s (+24.29%) 13.78s 14.35s p=0.005 n=6
Emit Time 3.22s (± 0.95%) 5.04s (± 4.13%) 🔻+1.82s (+56.65%) 4.89s 5.33s p=0.005 n=6
Total Time 17.03s (± 0.23%) 22.42s (± 1.31%) 🔻+5.39s (+31.65%) 21.88s 22.76s p=0.005 n=6
angular-1 - node (v18.15.0, x64)
Errors 7 7 ~ ~ ~ p=1.000 n=6
Symbols 945,753 945,753 ~ ~ ~ p=1.000 n=6
Types 410,067 410,067 ~ ~ ~ p=1.000 n=6
Memory used 1,222,713k (± 0.00%) 1,725,853k (± 0.00%) 🔻+503,140k (+41.15%) 1,725,780k 1,725,948k p=0.005 n=6
Parse Time 7.94s (± 0.85%) 9.67s (± 0.42%) 🔻+1.73s (+21.74%) 9.62s 9.72s p=0.005 n=6
Bind Time 2.23s (± 0.77%) 5.77s (± 0.61%) 🔻+3.54s (+158.94%) 5.72s 5.81s p=0.005 n=6
Check Time 36.45s (± 0.48%) 50.49s (± 0.32%) 🔻+14.04s (+38.52%) 50.28s 50.74s p=0.005 n=6
Emit Time 17.86s (± 0.32%) 26.43s (± 0.31%) 🔻+8.57s (+47.97%) 26.33s 26.53s p=0.005 n=6
Total Time 64.47s (± 0.34%) 92.35s (± 0.26%) 🔻+27.88s (+43.24%) 91.97s 92.63s p=0.005 n=6
mui-docs - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 2,529,156 2,529,156 ~ ~ ~ p=1.000 n=6
Types 936,017 936,017 ~ ~ ~ p=1.000 n=6
Memory used 2,364,411k (± 0.00%) 2,787,320k (± 0.00%) 🔻+422,910k (+17.89%) 2,787,264k 2,787,399k p=0.005 n=6
Parse Time 13.79s (± 0.27%) 16.55s (± 0.23%) 🔻+2.76s (+20.04%) 16.51s 16.62s p=0.005 n=6
Bind Time 3.20s (± 0.86%) 7.10s (± 0.28%) 🔻+3.90s (+121.87%) 7.07s 7.13s p=0.005 n=6
Check Time 105.85s (± 0.38%) 129.36s (± 0.22%) 🔻+23.51s (+22.21%) 128.98s 129.71s p=0.005 n=6
Emit Time 0.39s (± 3.08%) 0.41s (± 2.52%) 🔻+0.02s (+ 5.51%) 0.40s 0.43s p=0.018 n=6
Total Time 123.23s (± 0.36%) 153.42s (± 0.20%) 🔻+30.19s (+24.50%) 153.04s 153.86s p=0.005 n=6
self-build-src - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 1,246,552 1,434,615 🔻+188,063 (+15.09%) ~ ~ p=0.001 n=6
Types 264,445 278,258 🔻+13,813 (+ 5.22%) ~ ~ p=0.001 n=6
Memory used 2,459,084k (± 5.93%) 3,489,219k (± 0.01%) 🔻+1,030,135k (+41.89%) 3,488,782k 3,489,769k p=0.005 n=6
Parse Time 7.63s (± 0.48%) 10.19s (± 0.60%) 🔻+2.56s (+33.57%) 10.11s 10.28s p=0.005 n=6
Bind Time 2.81s (± 0.42%) 7.03s (± 0.91%) 🔻+4.22s (+150.33%) 6.96s 7.13s p=0.005 n=6
Check Time 50.94s (± 1.44%) 71.55s (± 0.69%) 🔻+20.61s (+40.45%) 70.93s 72.07s p=0.005 n=6
Emit Time 4.46s (± 4.40%) 6.59s (± 4.85%) 🔻+2.13s (+47.67%) 6.34s 7.05s p=0.005 n=6
Total Time 65.85s (± 1.07%) 95.38s (± 0.26%) 🔻+29.53s (+44.84%) 95.12s 95.75s p=0.005 n=6
self-build-src-public-api - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 1,246,552 1,434,615 🔻+188,063 (+15.09%) ~ ~ p=0.001 n=6
Types 264,445 278,258 🔻+13,813 (+ 5.22%) ~ ~ p=0.001 n=6
Memory used 2,474,074k (± 0.03%) 3,578,729k (± 0.01%) 🔻+1,104,655k (+44.65%) 3,578,410k 3,579,132k p=0.005 n=6
Parse Time 6.28s (± 0.75%) 8.34s (± 0.45%) 🔻+2.06s (+32.86%) 8.31s 8.41s p=0.005 n=6
Bind Time 2.04s (± 0.51%) 5.63s (± 0.93%) 🔻+3.59s (+175.39%) 5.58s 5.72s p=0.005 n=6
Check Time 41.66s (± 0.57%) 57.38s (± 0.72%) 🔻+15.72s (+37.72%) 56.86s 57.93s p=0.005 n=6
Emit Time 3.52s (± 1.77%) 5.31s (± 4.49%) 🔻+1.78s (+50.61%) 5.13s 5.78s p=0.005 n=6
Total Time 53.53s (± 0.56%) 76.66s (± 0.49%) 🔻+23.13s (+43.20%) 76.25s 77.14s p=0.005 n=6
self-compiler - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 259,902 333,924 🔻+74,022 (+28.48%) ~ ~ p=0.001 n=6
Types 106,141 119,820 🔻+13,679 (+12.89%) ~ ~ p=0.001 n=6
Memory used 435,632k (± 0.03%) 700,413k (± 0.01%) 🔻+264,781k (+60.78%) 700,298k 700,455k p=0.005 n=6
Parse Time 3.43s (± 1.07%) 4.28s (± 0.50%) 🔻+0.85s (+24.94%) 4.26s 4.31s p=0.005 n=6
Bind Time 1.29s (± 0.94%) 2.99s (± 0.91%) 🔻+1.69s (+131.06%) 2.96s 3.02s p=0.005 n=6
Check Time 18.13s (± 0.45%) 27.28s (± 0.38%) 🔻+9.15s (+50.45%) 27.15s 27.40s p=0.005 n=6
Emit Time 1.53s (± 1.37%) 2.81s (± 0.65%) 🔻+1.28s (+83.77%) 2.79s 2.83s p=0.005 n=6
Total Time 24.38s (± 0.33%) 37.36s (± 0.28%) 🔻+12.98s (+53.23%) 37.22s 37.52s p=0.005 n=6
ts-pre-modules - node (v18.15.0, x64)
Errors 68 68 ~ ~ ~ p=1.000 n=6
Symbols 225,018 225,018 ~ ~ ~ p=1.000 n=6
Types 94,249 94,249 ~ ~ ~ p=1.000 n=6
Memory used 370,241k (± 0.02%) 509,399k (± 0.00%) 🔻+139,158k (+37.59%) 509,365k 509,419k p=0.005 n=6
Parse Time 2.29s (± 0.51%) 2.68s (± 0.91%) 🔻+0.38s (+16.73%) 2.65s 2.72s p=0.005 n=6
Bind Time 1.32s (± 1.30%) 2.40s (± 0.97%) 🔻+1.07s (+81.34%) 2.37s 2.43s p=0.005 n=6
Check Time 13.39s (± 0.16%) 18.06s (± 0.36%) 🔻+4.67s (+34.89%) 17.96s 18.16s p=0.005 n=6
Emit Time 0.00s 0.00s ~ ~ ~ p=1.000 n=6
Total Time 17.00s (± 0.13%) 23.13s (± 0.44%) 🔻+6.13s (+36.06%) 23.00s 23.30s p=0.005 n=6
vscode - node (v18.15.0, x64)
Errors 1 0 ~ ~ ~ p=1.000 n=6+0
Symbols 3,077,266 0 ~ ~ ~ p=1.000 n=6+0
Types 1,061,668 0 ~ ~ ~ p=1.000 n=6+0
Memory used 3,179,782k (± 0.00%) 0k ~ ~ ~ p=1.000 n=6+0
Parse Time 13.98s (± 0.48%) 0s ~ ~ ~ p=1.000 n=6+0
Bind Time 4.36s (± 0.30%) 0s ~ ~ ~ p=1.000 n=6+0
Check Time 81.72s (± 0.35%) 0s ~ ~ ~ p=1.000 n=6+0
Emit Time 22.20s (± 0.37%) 0s ~ ~ ~ p=1.000 n=6+0
Total Time 122.27s (± 0.24%) 0s ~ ~ ~ p=1.000 n=6+0
webpack - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 277,157 277,157 ~ ~ ~ p=1.000 n=6
Types 112,949 112,949 ~ ~ ~ p=1.000 n=6
Memory used 426,912k (± 0.02%) 553,555k (± 0.01%) 🔻+126,643k (+29.66%) 553,499k 553,630k p=0.005 n=6
Parse Time 3.96s (± 0.21%) 4.53s (± 0.90%) 🔻+0.57s (+14.41%) 4.47s 4.58s p=0.005 n=6
Bind Time 1.72s (± 0.32%) 2.96s (± 0.41%) 🔻+1.25s (+72.79%) 2.95s 2.98s p=0.004 n=6
Check Time 17.63s (± 0.17%) 23.10s (± 0.33%) 🔻+5.47s (+31.00%) 23.00s 23.18s p=0.005 n=6
Emit Time 0.00s 0.00s ~ ~ ~ p=1.000 n=6
Total Time 23.30s (± 0.11%) 30.58s (± 0.23%) 🔻+7.28s (+31.24%) 30.51s 30.68s p=0.005 n=6
xstate-main - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 531,594 531,594 ~ ~ ~ p=1.000 n=6
Types 181,677 181,677 ~ ~ ~ p=1.000 n=6
Memory used 463,710k (± 0.01%) 561,753k (± 0.02%) 🔻+98,043k (+21.14%) 561,601k 561,867k p=0.005 n=6
Parse Time 3.12s (± 0.82%) 3.61s (± 0.57%) 🔻+0.49s (+15.59%) 3.58s 3.64s p=0.005 n=6
Bind Time 1.11s (± 0.37%) 2.25s (± 0.78%) 🔻+1.13s (+101.95%) 2.22s 2.27s p=0.003 n=6
Check Time 18.21s (± 0.28%) 21.31s (± 0.29%) 🔻+3.11s (+17.06%) 21.22s 21.38s p=0.005 n=6
Emit Time 0.00s 0.00s ~ ~ ~ p=1.000 n=6
Total Time 22.44s (± 0.27%) 27.17s (± 0.22%) 🔻+4.73s (+21.06%) 27.07s 27.24s p=0.005 n=6
System info unknown
Hosts
  • node (v18.15.0, x64)
Scenarios
  • Compiler-Unions - node (v18.15.0, x64)
  • angular-1 - node (v18.15.0, x64)
  • mui-docs - node (v18.15.0, x64)
  • self-build-src - node (v18.15.0, x64)
  • self-build-src-public-api - node (v18.15.0, x64)
  • self-compiler - node (v18.15.0, x64)
  • ts-pre-modules - node (v18.15.0, x64)
  • vscode - node (v18.15.0, x64)
  • webpack - node (v18.15.0, x64)
  • xstate-main - node (v18.15.0, x64)
Benchmark Name Iterations
Current pr 6
Baseline baseline 6

tsserver

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
Compiler-UnionsTSServer - node (v18.15.0, x64)
Req 1 - updateOpen 2,860ms (± 9.43%) 3,641ms (± 3.07%) 🔻+781ms (+27.32%) 3,583ms 3,869ms p=0.005 n=6
Req 2 - geterr 6,631ms (±10.45%) 9,031ms (± 9.89%) 🔻+2,401ms (+36.21%) 7,867ms 9,870ms p=0.005 n=6
Req 3 - references 392ms (± 1.69%) 512ms (±10.46%) 🔻+120ms (+30.47%) 464ms 580ms p=0.005 n=6
Req 4 - navto 337ms (± 2.33%) 427ms (± 7.66%) 🔻+90ms (+26.61%) 360ms 442ms p=0.005 n=6
Req 5 - completionInfo count 1,357 1,357 ~ ~ ~ p=1.000 n=6
Req 5 - completionInfo 118ms (± 7.77%) 136ms (± 6.85%) 🔻+17ms (+14.51%) 118ms 146ms p=0.016 n=6
CompilerTSServer - node (v18.15.0, x64)
Req 1 - updateOpen 3,126ms (±11.90%) 4,074ms (± 8.45%) 🔻+948ms (+30.32%) 3,825ms 4,724ms p=0.005 n=6
Req 2 - geterr 5,373ms (±10.23%) 6,795ms (±11.77%) 🔻+1,422ms (+26.46%) 6,009ms 7,613ms p=0.005 n=6
Req 3 - references 390ms (± 8.91%) 570ms (± 9.48%) 🔻+180ms (+46.21%) 518ms 643ms p=0.005 n=6
Req 4 - navto 338ms (± 2.42%) 411ms (± 8.96%) 🔻+74ms (+21.78%) 362ms 438ms p=0.005 n=6
Req 5 - completionInfo count 1,519 1,519 ~ ~ ~ p=1.000 n=6
Req 5 - completionInfo 115ms (± 5.83%) 113ms (± 8.56%) ~ 94ms 119ms p=0.329 n=6
xstate-main-1-tsserver - node (v18.15.0, x64)
Req 1 - updateOpen 6,476ms (± 6.25%) 8,568ms (± 5.63%) 🔻+2,092ms (+32.31%) 8,112ms 9,015ms p=0.005 n=6
Req 2 - geterr 1,689ms (± 0.58%) 1,763ms (±10.37%) ~ 1,525ms 1,894ms p=0.378 n=6
Req 3 - references 128ms (± 2.84%) 152ms (± 3.15%) 🔻+24ms (+18.88%) 146ms 156ms p=0.004 n=6
Req 4 - navto 600ms (± 2.64%) 691ms (± 1.39%) 🔻+91ms (+15.10%) 684ms 709ms p=0.005 n=6
Req 5 - completionInfo count 3,444 3,444 ~ ~ ~ p=1.000 n=6
Req 5 - completionInfo 1,257ms (± 1.17%) 1,305ms (± 0.55%) +48ms (+ 3.79%) 1,297ms 1,317ms p=0.005 n=6
System info unknown
Hosts
  • node (v18.15.0, x64)
Scenarios
  • CompilerTSServer - node (v18.15.0, x64)
  • Compiler-UnionsTSServer - node (v18.15.0, x64)
  • xstate-main-1-tsserver - node (v18.15.0, x64)
Benchmark Name Iterations
Current pr 6
Baseline baseline 6

startup

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
tsc-startup - node (v18.15.0, x64)
Execution time 189.74ms (± 0.19%) 210.37ms (± 0.18%) 🔻+20.63ms (+10.87%) 207.35ms 214.11ms p=0.000 n=600
tsserver-startup - node (v18.15.0, x64)
Execution time 285.00ms (± 0.27%) 306.29ms (± 0.30%) 🔻+21.29ms (+ 7.47%) 298.29ms 309.65ms p=0.000 n=600
tsserverlibrary-startup - node (v18.15.0, x64)
Execution time 277.37ms (± 0.27%) 297.86ms (± 0.33%) 🔻+20.50ms (+ 7.39%) 289.74ms 301.95ms p=0.000 n=600
typescript-startup - node (v18.15.0, x64)
Execution time 278.46ms (± 0.29%) 299.06ms (± 0.34%) 🔻+20.59ms (+ 7.40%) 290.15ms 304.24ms p=0.000 n=600
System info unknown
Hosts
  • node (v18.15.0, x64)
Scenarios
  • tsc-startup - node (v18.15.0, x64)
  • tsserver-startup - node (v18.15.0, x64)
  • tsserverlibrary-startup - node (v18.15.0, x64)
  • typescript-startup - node (v18.15.0, x64)
Benchmark Name Iterations
Current pr 6
Baseline baseline 6

Developer Information:

Download Benchmarks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Author: Team For Uncommitted Bug PR for untriaged, rejected, closed or missing bug
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants