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

Use ...args: never in builtin conditional type helpers #55714

Open
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

Andarist
Copy link
Contributor

@Andarist Andarist commented Sep 11, 2023

closes #55667 , cc @andrewbranch
fixes #56919

@typescript-bot typescript-bot added the For Uncommitted Bug PR for untriaged, rejected, closed or missing bug label Sep 11, 2023
@typescript-bot
Copy link
Collaborator

The TypeScript team hasn't accepted the linked issue #55667. If you can get it accepted, this PR will have a better chance of being reviewed.

@jakebailey
Copy link
Member

@typescript-bot test top200
@typescript-bot user test this
@typescript-bot run dt
@typescript-bot perf test this
@typescript-bot pack this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Sep 11, 2023

Heya @jakebailey, I've started to run the diff-based top-repos suite on this PR at 0a2d583. You can monitor the build here.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Sep 11, 2023

Heya @jakebailey, I've started to run the tarball bundle task on this PR at 0a2d583. You can monitor the build here.

@typescript-bot
Copy link
Collaborator

typescript-bot commented Sep 11, 2023

Heya @jakebailey, I've started to run the diff-based user code test suite on this PR at 0a2d583. You can monitor the build here.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Sep 11, 2023

Heya @jakebailey, I've started to run the parallelized Definitely Typed test suite on this PR at 0a2d583. You can monitor the build here.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Sep 11, 2023

Heya @jakebailey, I've started to run the regular perf test suite on this PR at 0a2d583. You can monitor the build here.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Sep 11, 2023

Hey @jakebailey, I've packed this into an installable tgz. You can install it for testing by referencing it in your package.json like so:

{
    "devDependencies": {
        "typescript": "https://typescript.visualstudio.com/cf7ac146-d525-443c-b23c-0d58337efebc/_apis/build/builds/157631/artifacts?artifactName=tgz&fileId=FE94CA1F17108FBA50E4F137461CB62A7EF9321D897F7A94C861969DCFCB26C502&fileName=/typescript-5.3.0-insiders.20230911.tgz"
    }
}

and then running npm install.


There is also a playground for this build and an npm module you can use via "typescript": "npm:@typescript-deploys/[email protected]".;

@typescript-bot
Copy link
Collaborator

@jakebailey Here are the results of running the user test suite comparing main and refs/pull/55714/merge:

There were infrastructure failures potentially unrelated to your change:

  • 1 instance of "Unknown failure"
  • 2 instances of "Package install failed"

Otherwise...

Everything looks good!

@typescript-bot
Copy link
Collaborator

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

Here they are:

Compiler

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
Angular - node (v16.17.1, x64)
Memory used 300,284k (± 0.00%) 300,289k (± 0.01%) ~ 300,264k 300,307k p=0.630 n=6
Parse Time 3.01s (± 0.17%) 3.00s (± 0.25%) ~ 2.99s 3.01s p=0.247 n=6
Bind Time 0.93s (± 0.00%) 0.93s (± 0.00%) ~ 0.93s 0.93s p=1.000 n=6
Check Time 9.32s (± 0.16%) 9.33s (± 0.42%) ~ 9.31s 9.41s p=0.933 n=6
Emit Time 7.63s (± 0.21%) 7.63s (± 0.23%) ~ 7.60s 7.65s p=0.934 n=6
Total Time 20.89s (± 0.10%) 20.89s (± 0.22%) ~ 20.85s 20.98s p=1.000 n=6
Compiler-Unions - node (v16.17.1, x64)
Memory used 193,884k (± 0.02%) 193,944k (± 0.01%) 61k ( 0.03%) 193,917k 193,992k p=0.031 n=6
Parse Time 1.58s (± 0.00%) 1.58s (± 0.26%) ~ 1.57s 1.58s p=0.405 n=6
Bind Time 0.79s (± 0.69%) 0.80s (± 0.69%) ~ 0.79s 0.80s p=1.000 n=6
Check Time 9.92s (± 0.49%) 9.93s (± 0.29%) ~ 9.90s 9.97s p=0.808 n=6
Emit Time 2.74s (± 0.00%) 2.74s (± 0.19%) ~ 2.73s 2.74s p=0.174 n=6
Total Time 15.03s (± 0.34%) 15.04s (± 0.23%) ~ 15.00s 15.09s p=0.747 n=6
Monaco - node (v16.17.1, x64)
Memory used 347,189k (± 0.01%) 347,189k (± 0.01%) ~ 347,145k 347,212k p=0.936 n=6
Parse Time 2.69s (± 0.39%) 2.69s (± 0.23%) ~ 2.68s 2.70s p=0.388 n=6
Bind Time 0.99s (± 0.00%) 0.99s (± 0.00%) ~ 0.99s 0.99s p=1.000 n=6
Check Time 7.92s (± 0.42%) 7.93s (± 0.34%) ~ 7.90s 7.97s p=0.375 n=6
Emit Time 4.26s (± 0.32%) 4.26s (± 0.27%) ~ 4.25s 4.28s p=0.506 n=6
Total Time 15.85s (± 0.26%) 15.88s (± 0.25%) ~ 15.82s 15.93s p=0.297 n=6
TFS - node (v16.17.1, x64)
Memory used 301,181k (± 0.00%) 301,182k (± 0.01%) ~ 301,144k 301,196k p=0.689 n=6
Parse Time 2.18s (± 0.19%) 2.18s (± 0.73%) ~ 2.15s 2.19s p=0.930 n=6
Bind Time 1.11s (± 0.00%) 1.11s (± 0.37%) ~ 1.11s 1.12s p=0.405 n=6
Check Time 7.24s (± 0.32%) 7.23s (± 0.22%) ~ 7.20s 7.24s p=0.621 n=6
Emit Time 3.99s (± 0.16%) 3.98s (± 0.52%) ~ 3.96s 4.02s p=0.210 n=6
Total Time 14.52s (± 0.15%) 14.51s (± 0.19%) ~ 14.46s 14.54s p=0.685 n=6
material-ui - node (v16.17.1, x64)
Memory used 479,476k (± 0.00%) 479,482k (± 0.00%) ~ 479,470k 479,494k p=0.226 n=6
Parse Time 3.14s (± 0.13%) 3.15s (± 0.24%) ~ 3.14s 3.16s p=0.100 n=6
Bind Time 0.91s (± 0.00%) 0.91s (± 0.00%) ~ 0.91s 0.91s p=1.000 n=6
Check Time 17.83s (± 0.39%) 17.81s (± 0.39%) ~ 17.72s 17.91s p=0.747 n=6
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) ~ 0.00s 0.00s p=1.000 n=6
Total Time 21.88s (± 0.32%) 21.88s (± 0.31%) ~ 21.78s 21.97s p=1.000 n=6
xstate - node (v16.17.1, x64)
Memory used 542,874k (± 0.01%) 542,826k (± 0.01%) ~ 542,777k 542,919k p=0.378 n=6
Parse Time 3.69s (± 0.20%) 3.69s (± 0.20%) ~ 3.68s 3.70s p=0.487 n=6
Bind Time 1.42s (± 4.28%) 1.40s (± 4.69%) ~ 1.34s 1.46s p=0.859 n=6
Check Time 3.21s (± 3.02%) 3.25s (± 2.27%) ~ 3.15s 3.32s p=0.374 n=6
Emit Time 0.09s (± 6.44%) 0.09s (± 6.44%) ~ 0.08s 0.09s p=1.000 n=6
Total Time 8.41s (± 0.50%) 8.42s (± 0.28%) ~ 8.38s 8.45s p=0.332 n=6
System info unknown
Hosts
  • node (v16.17.1, x64)
Scenarios
  • Angular - node (v16.17.1, x64)
  • Compiler-Unions - node (v16.17.1, x64)
  • Monaco - node (v16.17.1, x64)
  • TFS - node (v16.17.1, x64)
  • material-ui - node (v16.17.1, x64)
  • xstate - node (v16.17.1, 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 (v16.17.1, x64)
Req 1 - updateOpen 2,491ms (± 0.12%) 2,491ms (± 0.11%) ~ 2,487ms 2,495ms p=0.809 n=6
Req 2 - geterr 5,924ms (± 0.18%) 5,929ms (± 0.10%) ~ 5,922ms 5,936ms p=0.872 n=6
Req 3 - references 343ms (± 0.34%) 343ms (± 0.22%) ~ 342ms 344ms p=0.796 n=6
Req 4 - navto 275ms (± 0.19%) 275ms (± 0.19%) ~ 275ms 276ms p=1.000 n=6
Req 5 - completionInfo count 1,356 (± 0.00%) 1,356 (± 0.00%) ~ 1,356 1,356 p=1.000 n=6
Req 5 - completionInfo 80ms (± 8.15%) 78ms (± 3.19%) ~ 76ms 81ms p=1.000 n=6
CompilerTSServer - node (v16.17.1, x64)
Req 1 - updateOpen 2,625ms (± 0.60%) 2,616ms (± 0.46%) ~ 2,602ms 2,638ms p=0.574 n=6
Req 2 - geterr 4,770ms (± 0.12%) 4,770ms (± 0.29%) ~ 4,757ms 4,791ms p=0.873 n=6
Req 3 - references 350ms (± 0.21%) 351ms (± 0.35%) ~ 349ms 352ms p=0.502 n=6
Req 4 - navto 268ms (± 0.65%) 269ms (± 0.51%) ~ 267ms 270ms p=0.801 n=6
Req 5 - completionInfo count 1,518 (± 0.00%) 1,518 (± 0.00%) ~ 1,518 1,518 p=1.000 n=6
Req 5 - completionInfo 78ms (± 3.67%) 77ms (± 3.89%) ~ 73ms 79ms p=0.445 n=6
xstateTSServer - node (v16.17.1, x64)
Req 1 - updateOpen 2,702ms (± 0.24%) 2,706ms (± 0.10%) ~ 2,704ms 2,711ms p=0.090 n=6
Req 2 - geterr 1,962ms (± 1.84%) 1,968ms (± 0.91%) ~ 1,936ms 1,982ms p=0.810 n=6
Req 3 - references 140ms (± 1.34%) 141ms (± 0.63%) ~ 140ms 142ms p=0.114 n=6
Req 4 - navto 361ms (± 1.09%) 362ms (± 0.81%) ~ 358ms 365ms p=0.460 n=6
Req 5 - completionInfo count 2,071 (± 0.00%) 2,071 (± 0.00%) ~ 2,071 2,071 p=1.000 n=6
Req 5 - completionInfo 323ms (± 1.57%) 325ms (± 0.23%) ~ 324ms 326ms p=0.672 n=6
System info unknown
Hosts
  • node (v16.17.1, x64)
Scenarios
  • CompilerTSServer - node (v16.17.1, x64)
  • Compiler-UnionsTSServer - node (v16.17.1, x64)
  • xstateTSServer - node (v16.17.1, 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 (v16.17.1, x64)
Execution time 156.90ms (± 0.20%) 156.96ms (± 0.19%) ~ 155.01ms 160.58ms p=0.579 n=600
tsserver-startup - node (v16.17.1, x64)
Execution time 230.80ms (± 0.82%) 230.95ms (± 0.13%) 0.16ms ( 0.07%) 229.11ms 234.64ms p=0.000 n=600
tsserverlibrary-startup - node (v16.17.1, x64)
Execution time 235.46ms (± 0.11%) 235.82ms (± 0.13%) 0.36ms ( 0.15%) 234.56ms 242.00ms p=0.000 n=600
typescript-startup - node (v16.17.1, x64)
Execution time 235.61ms (± 0.11%) 235.42ms (± 0.13%) -0.18ms (- 0.08%) 234.20ms 240.82ms p=0.000 n=600
System info unknown
Hosts
  • node (v16.17.1, x64)
Scenarios
  • tsc-startup - node (v16.17.1, x64)
  • tsserver-startup - node (v16.17.1, x64)
  • tsserverlibrary-startup - node (v16.17.1, x64)
  • typescript-startup - node (v16.17.1, x64)
Benchmark Name Iterations
Current pr 6
Baseline baseline 6

Developer Information:

Download Benchmarks

@DanielRosenwasser
Copy link
Member

Why not InstanceType?

@typescript-bot
Copy link
Collaborator

@jakebailey Here are the results of running the top-repos suite comparing main and refs/pull/55714/merge:

Something interesting changed - please have a look.

Details

vuetifyjs/vuetify

4 of 7 projects failed to build with the old tsc and were ignored

packages/vuetify/tsconfig.checks.json

packages/vuetify/tsconfig.dist.json

packages/vuetify/tsconfig.json

@Andarist
Copy link
Contributor Author

I missed the InstanceType with my multi-cursor edit :v thanks for catching that.

@typescript-bot
Copy link
Collaborator

Hey @jakebailey, it looks like the DT test run failed. Please check the log for more details.
You can check the log here.

@andrewbranch
Copy link
Member

@typescript-bot user test this
@typescript-bot test top200

@typescript-bot
Copy link
Collaborator

typescript-bot commented Sep 11, 2023

Heya @andrewbranch, I've started to run the diff-based user code test suite on this PR at e08f2a3. You can monitor the build here.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Sep 11, 2023

Heya @andrewbranch, I've started to run the diff-based top-repos suite on this PR at e08f2a3. You can monitor the build here.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

@andrewbranch Here are the results of running the user test suite comparing main and refs/pull/55714/merge:

There were infrastructure failures potentially unrelated to your change:

  • 1 instance of "Unknown failure"
  • 2 instances of "Package install failed"

Otherwise...

Everything looks good!

@typescript-bot
Copy link
Collaborator

@andrewbranch Here are the results of running the top-repos suite comparing main and refs/pull/55714/merge:

Something interesting changed - please have a look.

Details

vuetifyjs/vuetify

4 of 7 projects failed to build with the old tsc and were ignored

packages/vuetify/tsconfig.checks.json

packages/vuetify/tsconfig.dist.json

packages/vuetify/tsconfig.json

@Andarist
Copy link
Contributor Author

Extracted (not exactly minimal yet) repro from vuetify: TS playground

@andrewbranch
Copy link
Member

That’s... weird

@jfet97
Copy link
Contributor

jfet97 commented Sep 21, 2023

Here is a 17 loc repro.

@andrewbranch
Copy link
Member

I think this is exposing an inference/assignability bug, not a logical consequence of switching the parameter type in the conditional extends type. I notice that if you swap infer R in NewReturnType for any or unknown, T1 starts taking the true branch of the conditional. So it seems like infer R is making the input type fail the extends assignability check, not ...args: never. That will need to be fixed first or as part of this PR.

@jfet97
Copy link
Contributor

jfet97 commented Sep 24, 2023

@andrewbranch I'll tell you what I found out after some debugging of the code in this playground.

Inside getConditionalType, when we are applying the two versions of the conditional to <D extends Record<string, unknown>>(t: D) => Foo<D> we have:

  1. With the classic definition of ReturnType: photo_2023-09-24_17-03-28

  2. With the modified defition, the one that uses never as the argument's type:
    photo_2023-09-24_17-05-05

In both cases R is correctly inferred as Foo<Record<string, unknown>>, but what is failing is the isTypeAssignableTo check between checkType and inferredExtendsType. What is that check for?

Return falseType for a definitely false extends check. We check an instantiations of the two types with type parameters mapped to the wildcard type, the most permissive instantiations possible (the wildcard type is assignable to and from all types). If those are not related, then no instantiations will be and we can just return the false branch type.

This is exactly what happens, because the never version always returns what is present in the false branch in this specific playground.

So when compareSignaturesRelated comes into play because of isTypeAssignableTo we have:

  1. any version:
    1.1 source is <D extends Record<string, unknown>>(t: D): Foo<D>
    1.2 target is (...args: any): Foo<Record<string, unknown>>
    1.3 source becomes (t: any): Foo<any> because of instantiateSignatureInContextOf
    1.4 So it seems all fine and dandy :)

  2. never version:
    2.1 source is <D extends Record<string, unknown>>(t: D): Foo<D>
    2.2 target is (...args: never): Foo<Record<string, unknown>>
    2.3 source becomes (t: never): Foo<never> because of instantiateSignatureInContextOf
    2.4 When params are checked sourceType = [t: never] and targetType = never are compared and found related. OTOH Foo<never> and Foo<Record<string, unknown>>, the two return types, are not considered related because D, the parameter of Foo, is an invariant type parameter (even if actually they are the same type considering how Foo is defined)

I suppose that the source of the problem is instantiateSignatureInContextOf that produces the Foo<never> as return type for source instead of what we would need, that is R i.e. Record<string, unknown>. Another supposition: this problem has never come up with the usual ReturnType definition because instantiateSignatureInContextOf in that case uses any, that has more chances to be considered related to other types.

Copy link
Member

@andrewbranch andrewbranch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Marking this as not currently mergeable based on my previous comment

@Andarist
Copy link
Contributor Author

I plan to get back to this soon-ish but I have a backlog of PR reviews to address right now so it will take some time 😉

@Andarist
Copy link
Contributor Author

Andarist commented Jan 1, 2024

@jakebailey @andrewbranch could you rerun test suite here? :)

@andrewbranch
Copy link
Member

@typescript-bot user test this
@typescript-bot test top200

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jan 2, 2024

Heya @andrewbranch, I've started to run the diff-based top-repos suite on this PR at f06aaaa. You can monitor the build here.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jan 2, 2024

Heya @andrewbranch, I've started to run the diff-based user code test suite on this PR at f06aaaa. You can monitor the build here.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

@andrewbranch Here are the results of running the user test suite comparing main and refs/pull/55714/merge:

There were infrastructure failures potentially unrelated to your change:

  • 1 instance of "Package install failed"

Otherwise...

Something interesting changed - please have a look.

Details

puppeteer

packages/browsers/test/src/tsconfig.json

@typescript-bot
Copy link
Collaborator

@andrewbranch Here are the results of running the top-repos suite comparing main and refs/pull/55714/merge:

Everything looks good!

@jfet97
Copy link
Contributor

jfet97 commented Jan 8, 2024

Hi @andrewbranch , do you think this PR can now become part of TS 5.4? The assignability problem has been solved by changing the definitions again (arguments/return type are being inferred even when not needed, then discarded), and there are no more failed tests.

@andrewbranch
Copy link
Member

Why are the infer _ needed?

@jfet97
Copy link
Contributor

jfet97 commented Jan 8, 2024

Why are the infer _ needed?

#56919 and this comment explain what happens if you don't use it.

@andrewbranch
Copy link
Member

@typescript-bot perf test

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jan 9, 2024

Heya @andrewbranch, I've started to run the regular perf test suite on this PR at f06aaaa. You can monitor the build here.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

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

Here they are:

startup

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
tsc-startup - node (v18.15.0, x64)
Execution time 154.38ms (± 0.20%) 154.34ms (± 0.18%) ~ 153.10ms 156.93ms p=0.527 n=600
tsserver-startup - node (v18.15.0, x64)
Execution time 229.28ms (± 0.16%) 228.99ms (± 0.17%) -0.29ms (- 0.13%) 227.72ms 234.25ms p=0.000 n=600
tsserverlibrary-startup - node (v18.15.0, x64)
Execution time 230.87ms (± 0.18%) 230.88ms (± 0.20%) ~ 228.87ms 236.94ms p=0.809 n=600
typescript-startup - node (v18.15.0, x64)
Execution time 230.64ms (± 0.19%) 230.68ms (± 0.20%) ~ 228.91ms 237.87ms p=0.751 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

tsc

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
Angular - node (v18.15.0, x64)
Memory used 295,472k (± 0.01%) 295,491k (± 0.01%) ~ 295,425k 295,518k p=0.230 n=6
Parse Time 2.65s (± 0.28%) 2.65s (± 0.19%) ~ 2.65s 2.66s p=0.784 n=6
Bind Time 0.82s (± 0.00%) 0.82s (± 0.00%) ~ 0.82s 0.82s p=1.000 n=6
Check Time 8.15s (± 0.32%) 8.16s (± 0.22%) ~ 8.14s 8.19s p=0.805 n=6
Emit Time 7.09s (± 0.19%) 7.09s (± 0.30%) ~ 7.07s 7.12s p=0.625 n=6
Total Time 18.72s (± 0.15%) 18.72s (± 0.11%) ~ 18.69s 18.74s p=1.000 n=6
Compiler-Unions - node (v18.15.0, x64)
Memory used 192,502k (± 1.23%) 191,519k (± 0.03%) ~ 191,460k 191,569k p=0.470 n=6
Parse Time 1.34s (± 0.62%) 1.35s (± 0.81%) ~ 1.34s 1.37s p=0.652 n=6
Bind Time 0.72s (± 0.00%) 0.72s (± 0.00%) ~ 0.72s 0.72s p=1.000 n=6
Check Time 9.26s (± 0.42%) 9.30s (± 0.29%) ~ 9.26s 9.33s p=0.108 n=6
Emit Time 2.63s (± 0.62%) 2.61s (± 0.62%) ~ 2.59s 2.64s p=0.211 n=6
Total Time 13.96s (± 0.36%) 13.98s (± 0.29%) ~ 13.91s 14.02s p=0.468 n=6
Monaco - node (v18.15.0, x64)
Memory used 347,408k (± 0.01%) 347,419k (± 0.01%) ~ 347,379k 347,433k p=0.378 n=6
Parse Time 2.46s (± 0.49%) 2.46s (± 0.31%) ~ 2.45s 2.47s p=0.867 n=6
Bind Time 0.93s (± 0.56%) 0.93s (± 0.88%) ~ 0.92s 0.94s p=0.929 n=6
Check Time 6.88s (± 0.43%) 6.88s (± 0.18%) ~ 6.87s 6.90s p=0.459 n=6
Emit Time 4.05s (± 0.29%) 4.06s (± 0.55%) ~ 4.02s 4.08s p=0.739 n=6
Total Time 14.31s (± 0.33%) 14.33s (± 0.13%) ~ 14.30s 14.35s p=0.871 n=6
TFS - node (v18.15.0, x64)
Memory used 302,744k (± 0.00%) 302,732k (± 0.00%) ~ 302,709k 302,746k p=0.093 n=6
Parse Time 2.00s (± 0.86%) 1.99s (± 1.70%) ~ 1.95s 2.03s p=0.936 n=6
Bind Time 1.00s (± 0.41%) 1.01s (± 1.32%) ~ 0.99s 1.02s p=0.206 n=6
Check Time 6.31s (± 0.28%) 6.32s (± 0.38%) ~ 6.28s 6.34s p=0.459 n=6
Emit Time 3.59s (± 0.18%) 3.59s (± 0.51%) ~ 3.56s 3.61s p=0.655 n=6
Total Time 12.90s (± 0.25%) 12.91s (± 0.26%) ~ 12.86s 12.96s p=0.420 n=6
material-ui - node (v18.15.0, x64)
Memory used 506,839k (± 0.00%) 506,941k (± 0.01%) 102k ( 0.02%) 506,902k 506,996k p=0.005 n=6
Parse Time 2.58s (± 0.57%) 2.58s (± 0.45%) ~ 2.57s 2.60s p=0.933 n=6
Bind Time 0.98s (± 0.85%) 1.00s (± 1.26%) 0.02s ( 1.52%) 0.99s 1.02s p=0.040 n=6
Check Time 16.91s (± 0.33%) 17.01s (± 0.79%) ~ 16.85s 17.17s p=0.199 n=6
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) ~ 0.00s 0.00s p=1.000 n=6
Total Time 20.47s (± 0.30%) 20.59s (± 0.71%) ~ 20.41s 20.77s p=0.173 n=6
xstate - node (v18.15.0, x64)
Memory used 512,919k (± 0.02%) 512,909k (± 0.01%) ~ 512,818k 512,966k p=0.575 n=6
Parse Time 3.28s (± 0.19%) 3.28s (± 0.31%) ~ 3.26s 3.29s p=0.654 n=6
Bind Time 1.54s (± 0.49%) 1.54s (± 0.34%) ~ 1.53s 1.54s p=0.784 n=6
Check Time 2.82s (± 0.48%) 2.83s (± 0.72%) ~ 2.81s 2.87s p=0.618 n=6
Emit Time 0.07s (± 5.69%) 0.07s (± 0.00%) ~ 0.07s 0.07s p=0.405 n=6
Total Time 7.72s (± 0.22%) 7.71s (± 0.31%) ~ 7.69s 7.76s p=0.517 n=6
System info unknown
Hosts
  • node (v18.15.0, x64)
Scenarios
  • Angular - node (v18.15.0, x64)
  • Compiler-Unions - node (v18.15.0, x64)
  • Monaco - node (v18.15.0, x64)
  • TFS - node (v18.15.0, x64)
  • material-ui - node (v18.15.0, x64)
  • xstate - 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,352ms (± 1.02%) 2,336ms (± 0.49%) ~ 2,324ms 2,352ms p=0.199 n=6
Req 2 - geterr 5,410ms (± 1.21%) 5,437ms (± 1.13%) ~ 5,374ms 5,519ms p=0.173 n=6
Req 3 - references 326ms (± 1.53%) 327ms (± 1.40%) ~ 321ms 332ms p=0.935 n=6
Req 4 - navto 275ms (± 1.12%) 276ms (± 1.27%) ~ 271ms 279ms p=0.669 n=6
Req 5 - completionInfo count 1,356 (± 0.00%) 1,356 (± 0.00%) ~ 1,356 1,356 p=1.000 n=6
Req 5 - completionInfo 90ms (± 5.80%) 87ms (± 6.13%) ~ 83ms 94ms p=0.287 n=6
CompilerTSServer - node (v18.15.0, x64)
Req 1 - updateOpen 2,464ms (± 1.05%) 2,468ms (± 0.89%) ~ 2,448ms 2,498ms p=0.810 n=6
Req 2 - geterr 4,160ms (± 1.75%) 4,137ms (± 1.89%) ~ 4,079ms 4,239ms p=0.575 n=6
Req 3 - references 339ms (± 1.28%) 339ms (± 1.29%) ~ 333ms 344ms p=1.000 n=6
Req 4 - navto 285ms (± 1.12%) 286ms (± 0.97%) ~ 283ms 291ms p=0.330 n=6
Req 5 - completionInfo count 1,518 (± 0.00%) 1,518 (± 0.00%) ~ 1,518 1,518 p=1.000 n=6
Req 5 - completionInfo 86ms (± 6.45%) 84ms (± 6.47%) ~ 77ms 90ms p=0.420 n=6
xstateTSServer - node (v18.15.0, x64)
Req 1 - updateOpen 2,620ms (± 0.30%) 2,602ms (± 0.75%) -18ms (- 0.68%) 2,567ms 2,620ms p=0.045 n=6
Req 2 - geterr 1,741ms (± 1.50%) 1,707ms (± 2.73%) ~ 1,664ms 1,778ms p=0.230 n=6
Req 3 - references 112ms (± 9.97%) 109ms (± 8.30%) ~ 102ms 123ms p=0.935 n=6
Req 4 - navto 366ms (± 0.41%) 366ms (± 0.30%) ~ 365ms 367ms p=0.865 n=6
Req 5 - completionInfo count 2,073 (± 0.00%) 2,073 (± 0.00%) ~ 2,073 2,073 p=1.000 n=6
Req 5 - completionInfo 311ms (± 1.71%) 305ms (± 2.13%) ~ 296ms 314ms p=0.126 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)
  • xstateTSServer - 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
For Uncommitted Bug PR for untriaged, rejected, closed or missing bug
Projects
Status: Waiting on author
6 participants