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

Allow (non-assert) type predicates to narrow by discriminant #57358

Merged
merged 5 commits into from Feb 13, 2024

Conversation

gabritto
Copy link
Member

@gabritto gabritto commented Feb 9, 2024

Fixes #45770.

In the example:

declare const fruit: { kind: 'apple'} | { kind: 'banana' } | { kind: 'cherry' }

declare function isOneOf<T, U extends T>(item: T, array: readonly U[]): item is U
if (isOneOf(fruit.kind, ['apple', 'banana'] as const)) {
    fruit.kind
    fruit
}

In narrowTypeByCallExpression when the reference to be narrowed is fruit and the call expression is isOneOf(fruit.kind, ['apple', 'banana'] as const), we were simply not doing the narrowing because we though none of the arguments of the call matched the reference. Now, we see that argument fruit.kind matches fruit.

Note that cases like this one still won't be narrowed:

declare function isA(x: unknown): x is "a";
declare const what: { kind1: { kind2: "a" } } | { kind1: { kind2: "b" } };

if (isA(what.kind1.kind2)) {
    const a: "a" = what.kind1.kind2; // This works: `what.kind1` is narrowed
    const w: { kind1: { kind2: "a" } } = what; // This doesn't work: `what` is not narrowed
}

because when matching the reference what to the arguments of isA(what.kind1.kind2), we only check one level of access expression, so we only check if what matches what.kind1, which it doesn't.
But this behavior is on par with how narrowing by discriminant property already works, including for the assert version of the example above (see, for instance, how getCandidateDiscriminantPropertyAccess is implemented).

@typescript-bot typescript-bot added Author: Team For Milestone Bug PRs that fix a bug with a specific milestone labels Feb 9, 2024
@gabritto
Copy link
Member Author

gabritto commented Feb 9, 2024

@typescript-bot run DT
@typescript-bot user test this
@typescript-bot test top200
@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Feb 9, 2024

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Feb 9, 2024

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Feb 9, 2024

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Feb 9, 2024

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

@gabritto Here are the results of running the user test suite comparing main and refs/pull/57358/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

@gabritto
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
Angular - node (v18.15.0, x64)
Memory used 295,665k (± 0.01%) 295,634k (± 0.01%) -32k (- 0.01%) 295,614k 295,656k p=0.031 n=6
Parse Time 2.66s (± 0.31%) 2.66s (± 0.39%) ~ 2.64s 2.67s p=0.932 n=6
Bind Time 0.83s (± 0.91%) 0.82s (± 0.63%) ~ 0.82s 0.83s p=0.247 n=6
Check Time 8.20s (± 0.22%) 8.23s (± 0.22%) +0.03s (+ 0.33%) 8.20s 8.25s p=0.044 n=6
Emit Time 7.10s (± 0.46%) 7.10s (± 0.30%) ~ 7.06s 7.12s p=0.685 n=6
Total Time 18.79s (± 0.19%) 18.81s (± 0.21%) ~ 18.74s 18.85s p=0.260 n=6
Compiler-Unions - node (v18.15.0, x64)
Memory used 191,527k (± 0.02%) 191,549k (± 0.02%) ~ 191,512k 191,590k p=0.575 n=6
Parse Time 1.36s (± 0.40%) 1.35s (± 0.56%) ~ 1.34s 1.36s p=0.476 n=6
Bind Time 0.72s (± 0.00%) 0.72s (± 0.00%) ~ 0.72s 0.72s p=1.000 n=6
Check Time 9.38s (± 0.40%) 9.37s (± 0.41%) ~ 9.34s 9.44s p=0.517 n=6
Emit Time 2.62s (± 0.38%) 2.61s (± 0.85%) ~ 2.59s 2.65s p=0.404 n=6
Total Time 14.08s (± 0.25%) 14.06s (± 0.28%) ~ 14.01s 14.12s p=0.327 n=6
Monaco - node (v18.15.0, x64)
Memory used 347,460k (± 0.01%) 347,463k (± 0.01%) ~ 347,418k 347,493k p=0.936 n=6
Parse Time 2.48s (± 0.21%) 2.48s (± 0.42%) ~ 2.47s 2.50s p=0.928 n=6
Bind Time 0.92s (± 0.59%) 0.93s (± 0.56%) ~ 0.92s 0.93s p=0.640 n=6
Check Time 6.96s (± 0.30%) 6.95s (± 0.70%) ~ 6.90s 7.04s p=0.686 n=6
Emit Time 4.06s (± 0.37%) 4.05s (± 0.31%) ~ 4.03s 4.06s p=0.564 n=6
Total Time 14.42s (± 0.27%) 14.41s (± 0.37%) ~ 14.38s 14.51s p=0.678 n=6
TFS - node (v18.15.0, x64)
Memory used 302,844k (± 0.01%) 302,845k (± 0.01%) ~ 302,817k 302,860k p=1.000 n=6
Parse Time 2.01s (± 0.41%) 2.02s (± 0.73%) ~ 2.00s 2.03s p=0.209 n=6
Bind Time 1.01s (± 1.40%) 1.00s (± 0.83%) ~ 1.00s 1.02s p=0.503 n=6
Check Time 6.33s (± 0.31%) 6.36s (± 0.45%) ~ 6.31s 6.38s p=0.167 n=6
Emit Time 3.60s (± 0.23%) 3.60s (± 0.58%) ~ 3.57s 3.63s p=0.801 n=6
Total Time 12.94s (± 0.14%) 12.98s (± 0.29%) ~ 12.92s 13.02s p=0.107 n=6
material-ui - node (v18.15.0, x64)
Memory used 511,367k (± 0.01%) 511,350k (± 0.00%) ~ 511,334k 511,373k p=0.336 n=6
Parse Time 2.65s (± 0.81%) 2.67s (± 0.28%) ~ 2.66s 2.68s p=0.150 n=6
Bind Time 1.00s (± 1.05%) 0.99s (± 0.90%) ~ 0.98s 1.00s p=0.452 n=6
Check Time 17.21s (± 0.29%) 17.25s (± 0.26%) ~ 17.20s 17.31s p=0.335 n=6
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) ~ 0.00s 0.00s p=1.000 n=6
Total Time 20.86s (± 0.31%) 20.91s (± 0.21%) ~ 20.86s 20.97s p=0.377 n=6
mui-docs - node (v18.15.0, x64)
Memory used 2,269,565k (± 0.00%) 2,269,557k (± 0.00%) ~ 2,269,526k 2,269,576k p=0.689 n=6
Parse Time 11.83s (± 0.44%) 11.91s (± 1.20%) ~ 11.76s 12.18s p=0.227 n=6
Bind Time 2.63s (± 0.59%) 2.63s (± 0.29%) ~ 2.62s 2.64s p=0.934 n=6
Check Time 100.75s (± 0.76%) 101.31s (± 0.57%) ~ 100.59s 102.21s p=0.230 n=6
Emit Time 0.32s (± 1.63%) 0.32s (± 1.28%) ~ 0.31s 0.32s p=0.595 n=6
Total Time 115.53s (± 0.67%) 116.17s (± 0.49%) ~ 115.45s 116.93s p=0.230 n=6
self-build-src - node (v18.15.0, x64)
Memory used 2,414,286k (± 0.02%) 2,414,036k (± 0.02%) ~ 2,413,401k 2,414,851k p=0.471 n=6
Parse Time 4.95s (± 0.61%) 4.90s (± 1.03%) ~ 4.87s 5.00s p=0.065 n=6
Bind Time 1.88s (± 0.45%) 1.86s (± 0.79%) ~ 1.84s 1.88s p=0.094 n=6
Check Time 33.45s (± 0.37%) 33.50s (± 0.58%) ~ 33.35s 33.85s p=1.000 n=6
Emit Time 2.64s (± 2.77%) 2.64s (± 1.82%) ~ 2.59s 2.71s p=0.936 n=6
Total Time 42.93s (± 0.26%) 42.93s (± 0.58%) ~ 42.75s 43.36s p=0.471 n=6
self-compiler - node (v18.15.0, x64)
Memory used 418,800k (± 0.01%) 418,793k (± 0.01%) ~ 418,746k 418,847k p=1.000 n=6
Parse Time 2.85s (± 1.20%) 2.84s (± 0.75%) ~ 2.82s 2.88s p=0.808 n=6
Bind Time 1.08s (± 0.48%) 1.08s (± 0.70%) ~ 1.07s 1.09s p=0.784 n=6
Check Time 15.08s (± 0.36%) 15.14s (± 0.42%) ~ 15.07s 15.23s p=0.260 n=6
Emit Time 1.14s (± 1.24%) 1.14s (± 1.72%) ~ 1.13s 1.18s p=1.000 n=6
Total Time 20.14s (± 0.34%) 20.20s (± 0.39%) ~ 20.11s 20.30s p=0.333 n=6
vscode - node (v18.15.0, x64)
Memory used 2,828,952k (± 0.00%) 2,828,983k (± 0.00%) ~ 2,828,919k 2,829,023k p=0.173 n=6
Parse Time 10.72s (± 0.42%) 10.71s (± 0.13%) ~ 10.69s 10.73s p=0.519 n=6
Bind Time 3.42s (± 0.37%) 3.42s (± 0.66%) ~ 3.40s 3.46s p=1.000 n=6
Check Time 59.96s (± 0.24%) 60.11s (± 0.39%) ~ 59.87s 60.50s p=0.336 n=6
Emit Time 16.17s (± 0.54%) 16.26s (± 0.42%) ~ 16.21s 16.39s p=0.123 n=6
Total Time 90.26s (± 0.24%) 90.50s (± 0.26%) ~ 90.21s 90.80s p=0.149 n=6
webpack - node (v18.15.0, x64)
Memory used 394,015k (± 0.02%) 394,079k (± 0.02%) ~ 393,967k 394,133k p=0.230 n=6
Parse Time 3.11s (± 0.87%) 3.10s (± 0.83%) ~ 3.07s 3.14s p=0.747 n=6
Bind Time 1.38s (± 1.12%) 1.39s (± 1.36%) ~ 1.37s 1.41s p=0.448 n=6
Check Time 14.07s (± 0.26%) 14.12s (± 0.21%) +0.05s (+ 0.37%) 14.08s 14.15s p=0.019 n=6
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) ~ 0.00s 0.00s p=1.000 n=6
Total Time 18.55s (± 0.27%) 18.61s (± 0.13%) +0.05s (+ 0.29%) 18.58s 18.65s p=0.024 n=6
xstate - node (v18.15.0, x64)
Memory used 513,402k (± 0.01%) 513,363k (± 0.01%) ~ 513,297k 513,436k p=0.173 n=6
Parse Time 3.28s (± 0.23%) 3.28s (± 0.17%) ~ 3.27s 3.28s p=0.137 n=6
Bind Time 1.54s (± 0.41%) 1.54s (± 0.26%) ~ 1.54s 1.55s p=0.673 n=6
Check Time 2.85s (± 0.86%) 2.84s (± 0.75%) ~ 2.81s 2.86s p=0.568 n=6
Emit Time 0.08s (± 0.00%) 0.08s (± 0.00%) ~ 0.08s 0.08s p=1.000 n=6
Total Time 7.75s (± 0.38%) 7.73s (± 0.29%) ~ 7.70s 7.76s p=0.332 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)
  • mui-docs - node (v18.15.0, x64)
  • self-build-src - node (v18.15.0, x64)
  • self-compiler - node (v18.15.0, x64)
  • vscode - node (v18.15.0, x64)
  • webpack - 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,343ms (± 0.61%) 2,328ms (± 0.64%) ~ 2,301ms 2,343ms p=0.173 n=6
Req 2 - geterr 5,506ms (± 1.37%) 5,555ms (± 1.42%) ~ 5,451ms 5,630ms p=0.336 n=6
Req 3 - references 322ms (± 0.26%) 325ms (± 0.89%) +3ms (+ 0.93%) 322ms 330ms p=0.014 n=6
Req 4 - navto 277ms (± 1.31%) 274ms (± 1.25%) ~ 271ms 279ms p=0.204 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 87ms (± 5.34%) 88ms (± 7.93%) ~ 79ms 95ms p=0.933 n=6
CompilerTSServer - node (v18.15.0, x64)
Req 1 - updateOpen 2,492ms (± 0.80%) 2,488ms (± 0.66%) ~ 2,464ms 2,503ms p=0.521 n=6
Req 2 - geterr 4,137ms (± 0.24%) 4,147ms (± 1.97%) ~ 4,071ms 4,259ms p=0.378 n=6
Req 3 - references 338ms (± 1.67%) 333ms (± 1.55%) ~ 329ms 343ms p=0.292 n=6
Req 4 - navto 286ms (± 0.29%) 285ms (± 0.48%) ~ 283ms 286ms p=0.183 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 85ms (± 9.75%) 79ms (± 8.46%) ~ 74ms 89ms p=0.150 n=6
xstateTSServer - node (v18.15.0, x64)
Req 1 - updateOpen 2,600ms (± 0.71%) 2,605ms (± 0.34%) ~ 2,593ms 2,620ms p=0.521 n=6
Req 2 - geterr 1,730ms (± 2.54%) 1,710ms (± 2.50%) ~ 1,653ms 1,753ms p=0.336 n=6
Req 3 - references 118ms (± 9.34%) 117ms (± 9.84%) ~ 106ms 128ms p=0.567 n=6
Req 4 - navto 371ms (± 0.41%) 371ms (± 0.15%) ~ 370ms 371ms p=0.342 n=6
Req 5 - completionInfo count 2,078 (± 0.00%) 2,078 (± 0.00%) ~ 2,078 2,078 p=1.000 n=6
Req 5 - completionInfo 310ms (± 2.76%) 310ms (± 1.21%) ~ 306ms 315ms p=1.000 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

startup

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
tsc-startup - node (v18.15.0, x64)
Execution time 153.65ms (± 0.20%) 153.39ms (± 0.19%) -0.26ms (- 0.17%) 152.37ms 158.73ms p=0.000 n=600
tsserver-startup - node (v18.15.0, x64)
Execution time 229.79ms (± 0.17%) 229.48ms (± 0.16%) -0.31ms (- 0.13%) 228.20ms 233.08ms p=0.000 n=600
tsserverlibrary-startup - node (v18.15.0, x64)
Execution time 231.18ms (± 0.20%) 231.17ms (± 0.18%) ~ 229.41ms 236.89ms p=0.598 n=600
typescript-startup - node (v18.15.0, x64)
Execution time 231.86ms (± 0.27%) 231.97ms (± 0.21%) +0.12ms (+ 0.05%) 230.38ms 243.19ms 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

@typescript-bot
Copy link
Collaborator

Hey @gabritto, the results of running the DT tests are ready.
Everything looks the same!
You can check the log here.

@typescript-bot
Copy link
Collaborator

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

Everything looks good!

if (
isOrContainsMatchingReference(reference, argument)
|| optionalChainContainsReference(argument, reference)
|| isAccessExpression(argument) && isMatchingReference(reference, argument.expression)
Copy link
Member

Choose a reason for hiding this comment

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

Wouldn't it be better to getDiscriminantPropertyAccess(argument, type) so the argument only matches if it has an actual discriminable property? AFAIK, hasMatchingArgument is only used in two places, so specializing it a bit more for this usecase is probably fine. Technically getDiscriminantPropertyAccess can also match binding patterns and identifiers aliasing discriminable properties, too, eg,

const kind = fruid.kind;
if (isOneOf(kind, ['apple', 'banana'] as const)) {
    fruit.kind
    fruit
}

Copy link
Member Author

Choose a reason for hiding this comment

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

We'll end up calling getDiscriminantPropertyAccess twice, but I'll try doing that.

Copy link
Member Author

Choose a reason for hiding this comment

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

You know what, at this rate, if we need to call getDiscriminantPropertyAccess to decide whether we should call narrowTypeByTypePredicate, which will then possibly call getDiscriminantPropertyAccess (and also call isMatchingReference anyways), then we might as well just always call narrowTypeByTypePredicate? I'll try that and see if it affects performance.

Copy link
Member Author

Choose a reason for hiding this comment

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

Ok, getting rid of the hasMatchingArgument inside narrowTypeByCallExpression has proved disastrous: it causes a ton of errors, which look completely unrelated to narrowing. From debugging the pyright errors listed by the user tests run, I think what happens is that, inside narrowTypeByCallExpression, if we call getEffectsSignature(callExpression), we now go type checking a bunch of things, causing circularities that then cause a ton of errors.
So it looks like we do need to protect the call to getEffectsSignature(...) with a check of hasMatchingArgument(...), to avoid running into unnecessary circularities.

Copy link
Member Author

Choose a reason for hiding this comment

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

@weswigham I've switched to using getCandidateDiscriminantPropertyAccess for the above reasons.
Can you take a look again?

@gabritto
Copy link
Member Author

@typescript-bot pack this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Feb 12, 2024

Heya @gabritto, I've started to run the tarball bundle task on this PR at 24cc86a. You can monitor the build here.

@typescript-bot
Copy link
Collaborator

typescript-bot commented Feb 12, 2024

Hey @gabritto, 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/159832/artifacts?artifactName=tgz&fileId=DD577F1886072494A97D03E7E5A0505E37517209F12C72287A38865776539D2B02&fileName=/typescript-5.4.0-insiders.20240212.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/pr-build@5.4.0-pr-57358-11".;

@gabritto
Copy link
Member Author

@typescript-bot run DT
@typescript-bot user test this
@typescript-bot test top200
@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Feb 12, 2024

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Feb 12, 2024

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Feb 12, 2024

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Feb 12, 2024

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

@gabritto Here are the results of running the user test suite comparing main and refs/pull/57358/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

pyright

/mnt/ts_downloads/pyright/build.sh

  • [NEW] error TS18048: 'curDeclaration' is possibly 'undefined'.
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(250,13)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(250,63)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(261,43)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(271,14)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(271,46)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(272,41)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(278,44)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(281,17)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(282,21)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(290,26)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(291,25)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(292,26)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(294,59)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(304,41)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(305,21)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(306,46)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(313,72)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(321,17)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(399,17)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(400,17)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(401,17)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(403,62)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(250,13)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(250,63)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(261,43)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(271,14)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(271,46)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(272,41)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(278,44)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(281,17)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(282,21)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(290,26)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(291,25)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(292,26)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(294,59)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(304,41)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(305,21)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(306,46)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(313,72)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(321,17)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(399,17)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(400,17)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(401,17)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(403,62)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(250,13)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(250,63)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(261,43)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(271,14)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(271,46)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(272,41)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(278,44)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(281,17)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(282,21)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(290,26)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(291,25)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(292,26)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(294,59)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(304,41)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(305,21)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(306,46)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(313,72)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(321,17)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(399,17)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(400,17)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(401,17)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(403,62)
  • [NEW] error TS2339: Property 'symbolName' does not exist on type 'Declaration'.
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(250,78)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(278,59)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(282,36)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(305,36)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(313,87)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(250,78)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(278,59)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(282,36)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(305,36)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(313,87)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(250,78)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(278,59)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(282,36)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(305,36)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(313,87)
  • [NEW] error TS2339: Property 'usesLocalName' does not exist on type 'Declaration'.
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(261,58)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(261,58)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(261,58)
  • [NEW] error TS2339: Property 'loadSymbolsFromPath' does not exist on type 'Declaration'.
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(271,61)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(271,61)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(271,61)
  • [NEW] error TS2339: Property 'submoduleFallback' does not exist on type 'Declaration'.
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(281,32)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(291,40)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(292,41)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(294,74)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(304,56)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(306,61)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(401,32)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(403,77)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(281,32)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(291,40)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(292,41)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(294,74)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(304,56)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(306,61)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(401,32)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(403,77)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(281,32)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(291,40)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(292,41)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(294,74)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(304,56)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(306,61)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(401,32)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(403,77)
  • [NEW] error TS2339: Property 'isNativeLib' does not exist on type 'Declaration'.
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(321,32)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(321,32)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(321,32)
  • [NEW] error TS7022: 'unvisitedDecls' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(365,15)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(365,15)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(365,15)
  • [NEW] error TS2345: Argument of type 'Declaration | undefined' is not assignable to parameter of type 'Declaration'.
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(412,29)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/declarationUtils.ts(412,29)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/declarationUtils.ts(412,29)
  • [NEW] error TS7022: 'versionInfo' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/importResolver.ts(2054,19)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/importResolver.ts(2054,19)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/importResolver.ts(2054,19)
  • [NEW] error TS7006: Parameter 'p' implicitly has an 'any' type.
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/importResolver.ts(2069,67)
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/importResolver.ts(2075,68)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/importResolver.ts(2069,67)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/importResolver.ts(2075,68)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/importResolver.ts(2069,67)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/importResolver.ts(2075,68)
  • [NEW] error TS7022: 'file' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/program.ts(2018,19)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/program.ts(2018,19)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/program.ts(2018,19)
  • [NEW] error TS7022: 'token' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/sourceFile.ts(1201,28)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/sourceFile.ts(1201,28)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/sourceFile.ts(1201,28)
  • [NEW] error TS7022: 'regexStr' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/sourceFile.ts(1206,27)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/sourceFile.ts(1206,27)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/sourceFile.ts(1206,27)
  • [NEW] error TS7022: 'regex' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/analyzer/sourceFile.ts(1207,27)
    • /mnt/ts_downloads/pyright/pyright-internal: src/analyzer/sourceFile.ts(1207,27)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/analyzer/sourceFile.ts(1207,27)
  • [NEW] error TS7022: 'tempResult' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/languageService/referencesProvider.ts(261,23)
    • /mnt/ts_downloads/pyright/pyright-internal: src/languageService/referencesProvider.ts(261,23)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/languageService/referencesProvider.ts(261,23)
  • [NEW] error TS7022: 'loc' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
    • /mnt/ts_downloads/pyright/pyright: ../pyright-internal/src/languageService/referencesProvider.ts(271,28)
    • /mnt/ts_downloads/pyright/pyright-internal: src/languageService/referencesProvider.ts(271,28)
    • /mnt/ts_downloads/pyright/vscode-pyright: ../pyright-internal/src/languageService/referencesProvider.ts(271,28)

webpack

tsconfig.types.json

@typescript-bot
Copy link
Collaborator

@gabritto
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
Angular - node (v18.15.0, x64)
Memory used 295,671k (± 0.01%) 295,605k (± 0.00%) -66k (- 0.02%) 295,597k 295,616k p=0.005 n=6
Parse Time 2.67s (± 0.31%) 2.66s (± 0.28%) ~ 2.65s 2.67s p=0.120 n=6
Bind Time 0.84s (± 1.06%) 0.83s (± 1.47%) ~ 0.82s 0.85s p=0.445 n=6
Check Time 8.21s (± 0.25%) 8.17s (± 0.24%) -0.03s (- 0.41%) 8.14s 8.20s p=0.019 n=6
Emit Time 7.09s (± 0.46%) 7.10s (± 0.16%) ~ 7.09s 7.12s p=0.809 n=6
Total Time 18.80s (± 0.18%) 18.77s (± 0.17%) ~ 18.73s 18.82s p=0.077 n=6
Compiler-Unions - node (v18.15.0, x64)
Memory used 191,540k (± 0.02%) 192,565k (± 1.28%) ~ 191,549k 197,584k p=0.173 n=6
Parse Time 1.36s (± 0.60%) 1.36s (± 1.43%) ~ 1.33s 1.39s p=0.866 n=6
Bind Time 0.72s (± 0.57%) 0.72s (± 0.00%) ~ 0.72s 0.72s p=0.405 n=6
Check Time 9.38s (± 0.28%) 9.36s (± 0.48%) ~ 9.29s 9.41s p=0.373 n=6
Emit Time 2.62s (± 0.57%) 2.62s (± 0.45%) ~ 2.60s 2.63s p=1.000 n=6
Total Time 14.08s (± 0.26%) 14.06s (± 0.25%) ~ 14.00s 14.09s p=0.170 n=6
Monaco - node (v18.15.0, x64)
Memory used 347,468k (± 0.00%) 347,443k (± 0.01%) -25k (- 0.01%) 347,422k 347,481k p=0.037 n=6
Parse Time 2.48s (± 0.75%) 2.49s (± 0.42%) ~ 2.47s 2.50s p=0.511 n=6
Bind Time 0.93s (± 1.05%) 0.93s (± 0.56%) ~ 0.92s 0.93s p=0.386 n=6
Check Time 6.98s (± 0.60%) 6.93s (± 0.21%) ~ 6.91s 6.95s p=0.073 n=6
Emit Time 4.04s (± 0.34%) 4.07s (± 0.37%) ~ 4.04s 4.08s p=0.050 n=6
Total Time 14.42s (± 0.46%) 14.40s (± 0.14%) ~ 14.38s 14.43s p=0.280 n=6
TFS - node (v18.15.0, x64)
Memory used 302,851k (± 0.00%) 302,788k (± 0.01%) -64k (- 0.02%) 302,746k 302,840k p=0.008 n=6
Parse Time 2.02s (± 0.75%) 2.01s (± 0.66%) ~ 1.99s 2.03s p=0.284 n=6
Bind Time 1.01s (± 1.22%) 1.01s (± 1.02%) ~ 1.00s 1.02s p=0.934 n=6
Check Time 6.33s (± 0.30%) 6.32s (± 0.34%) ~ 6.29s 6.35s p=0.167 n=6
Emit Time 3.59s (± 0.57%) 3.59s (± 0.34%) ~ 3.57s 3.60s p=0.622 n=6
Total Time 12.95s (± 0.22%) 12.92s (± 0.21%) ~ 12.90s 12.97s p=0.171 n=6
material-ui - node (v18.15.0, x64)
Memory used 511,363k (± 0.00%) 511,348k (± 0.00%) ~ 511,329k 511,384k p=0.148 n=6
Parse Time 2.66s (± 0.19%) 2.66s (± 0.46%) ~ 2.64s 2.67s p=0.241 n=6
Bind Time 0.98s (± 0.52%) 0.99s (± 0.52%) ~ 0.98s 0.99s p=0.311 n=6
Check Time 17.30s (± 0.31%) 17.29s (± 0.38%) ~ 17.21s 17.36s p=0.810 n=6
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) ~ 0.00s 0.00s p=1.000 n=6
Total Time 20.95s (± 0.27%) 20.93s (± 0.33%) ~ 20.85s 21.00s p=0.810 n=6
mui-docs - node (v18.15.0, x64)
Memory used 2,270,578k (± 0.00%) 2,270,519k (± 0.00%) -59k (- 0.00%) 2,270,483k 2,270,539k p=0.005 n=6
Parse Time 11.84s (± 0.44%) 11.89s (± 0.95%) ~ 11.77s 12.06s p=0.748 n=6
Bind Time 2.63s (± 0.37%) 2.63s (± 0.29%) ~ 2.62s 2.64s p=0.652 n=6
Check Time 101.57s (± 1.02%) 101.01s (± 1.36%) ~ 99.13s 103.03s p=0.471 n=6
Emit Time 0.32s (± 0.00%) 0.32s (± 1.27%) ~ 0.32s 0.33s p=0.405 n=6
Total Time 116.36s (± 0.89%) 115.85s (± 1.24%) ~ 113.84s 117.89s p=0.471 n=6
self-build-src - node (v18.15.0, x64)
Memory used 2,414,170k (± 0.02%) 2,414,377k (± 0.03%) ~ 2,413,401k 2,415,404k p=0.810 n=6
Parse Time 4.92s (± 1.37%) 4.97s (± 0.70%) ~ 4.93s 5.01s p=0.128 n=6
Bind Time 1.87s (± 0.52%) 1.88s (± 0.56%) ~ 1.86s 1.89s p=0.673 n=6
Check Time 33.42s (± 0.29%) 33.44s (± 0.41%) ~ 33.21s 33.59s p=0.689 n=6
Emit Time 2.67s (± 1.47%) 2.66s (± 0.91%) ~ 2.63s 2.70s p=0.810 n=6
Total Time 42.91s (± 0.22%) 42.98s (± 0.37%) ~ 42.71s 43.15s p=0.298 n=6
self-compiler - node (v18.15.0, x64)
Memory used 418,769k (± 0.03%) 418,686k (± 0.02%) ~ 418,593k 418,826k p=0.230 n=6
Parse Time 2.77s (± 2.66%) 2.77s (± 2.89%) ~ 2.67s 2.87s p=1.000 n=6
Bind Time 1.13s (± 6.90%) 1.13s (± 6.64%) ~ 1.07s 1.24s p=0.802 n=6
Check Time 15.09s (± 0.56%) 15.09s (± 0.26%) ~ 15.05s 15.16s p=1.000 n=6
Emit Time 1.13s (± 0.79%) 1.14s (± 1.02%) ~ 1.13s 1.16s p=0.114 n=6
Total Time 20.12s (± 0.44%) 20.12s (± 0.28%) ~ 20.07s 20.20s p=0.809 n=6
vscode - node (v18.15.0, x64)
Memory used 2,832,525k (± 0.00%) 2,832,669k (± 0.00%) +144k (+ 0.01%) 2,832,588k 2,832,728k p=0.008 n=6
Parse Time 10.74s (± 0.26%) 10.75s (± 0.20%) ~ 10.72s 10.77s p=0.871 n=6
Bind Time 3.42s (± 0.34%) 3.42s (± 0.22%) ~ 3.41s 3.43s p=0.734 n=6
Check Time 60.18s (± 0.48%) 60.11s (± 0.18%) ~ 59.95s 60.25s p=0.471 n=6
Emit Time 16.21s (± 0.69%) 16.20s (± 0.26%) ~ 16.15s 16.27s p=0.575 n=6
Total Time 90.55s (± 0.43%) 90.49s (± 0.14%) ~ 90.30s 90.65s p=0.471 n=6
webpack - node (v18.15.0, x64)
Memory used 393,978k (± 0.01%) 393,997k (± 0.01%) ~ 393,950k 394,042k p=0.230 n=6
Parse Time 3.10s (± 0.88%) 3.12s (± 0.62%) ~ 3.09s 3.14s p=0.287 n=6
Bind Time 1.39s (± 1.62%) 1.39s (± 1.42%) ~ 1.37s 1.41s p=0.933 n=6
Check Time 14.07s (± 0.22%) 14.10s (± 0.34%) ~ 14.05s 14.18s p=0.255 n=6
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) ~ 0.00s 0.00s p=1.000 n=6
Total Time 18.56s (± 0.20%) 18.61s (± 0.28%) ~ 18.56s 18.70s p=0.088 n=6
xstate - node (v18.15.0, x64)
Memory used 513,395k (± 0.01%) 513,363k (± 0.01%) ~ 513,329k 513,406k p=0.261 n=6
Parse Time 3.28s (± 0.25%) 3.27s (± 0.27%) ~ 3.26s 3.28s p=0.270 n=6
Bind Time 1.55s (± 0.53%) 1.54s (± 0.26%) ~ 1.54s 1.55s p=0.248 n=6
Check Time 2.85s (± 0.57%) 2.86s (± 0.68%) ~ 2.83s 2.89s p=0.250 n=6
Emit Time 0.08s (± 4.99%) 0.08s (± 0.00%) ~ 0.08s 0.08s p=0.405 n=6
Total Time 7.76s (± 0.38%) 7.75s (± 0.31%) ~ 7.71s 7.78s p=0.572 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)
  • mui-docs - node (v18.15.0, x64)
  • self-build-src - node (v18.15.0, x64)
  • self-compiler - node (v18.15.0, x64)
  • vscode - node (v18.15.0, x64)
  • webpack - 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 (± 0.70%) 2,343ms (± 0.70%) ~ 2,329ms 2,371ms p=0.199 n=6
Req 2 - geterr 5,513ms (± 1.89%) 5,549ms (± 1.22%) ~ 5,434ms 5,606ms p=0.689 n=6
Req 3 - references 322ms (± 0.46%) 326ms (± 1.74%) ~ 322ms 335ms p=0.193 n=6
Req 4 - navto 277ms (± 1.23%) 272ms (± 1.12%) -4ms (- 1.57%) 270ms 277ms p=0.043 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 86ms (± 5.84%) 88ms (± 7.55%) ~ 79ms 93ms p=0.565 n=6
CompilerTSServer - node (v18.15.0, x64)
Req 1 - updateOpen 2,494ms (± 0.76%) 2,483ms (± 0.56%) ~ 2,469ms 2,509ms p=0.199 n=6
Req 2 - geterr 4,153ms (± 1.52%) 4,153ms (± 2.01%) ~ 4,072ms 4,232ms p=0.688 n=6
Req 3 - references 338ms (± 1.68%) 334ms (± 2.00%) ~ 327ms 343ms p=0.120 n=6
Req 4 - navto 284ms (± 0.35%) 284ms (± 0.54%) ~ 282ms 286ms p=0.933 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 83ms (± 9.87%) 81ms (± 8.39%) ~ 73ms 90ms p=0.683 n=6
xstateTSServer - node (v18.15.0, x64)
Req 1 - updateOpen 2,608ms (± 0.61%) 2,616ms (± 0.34%) ~ 2,602ms 2,628ms p=0.521 n=6
Req 2 - geterr 1,744ms (± 2.73%) 1,751ms (± 1.62%) ~ 1,699ms 1,785ms p=1.000 n=6
Req 3 - references 114ms (± 8.36%) 117ms (± 9.21%) ~ 107ms 128ms p=1.000 n=6
Req 4 - navto 372ms (± 0.28%) 371ms (± 1.13%) ~ 363ms 375ms p=1.000 n=6
Req 5 - completionInfo count 2,078 (± 0.00%) 2,078 (± 0.00%) ~ 2,078 2,078 p=1.000 n=6
Req 5 - completionInfo 307ms (± 1.69%) 309ms (± 1.85%) ~ 299ms 315ms p=0.518 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

startup

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
tsc-startup - node (v18.15.0, x64)
Execution time 153.59ms (± 0.21%) 153.50ms (± 0.17%) -0.09ms (- 0.06%) 152.31ms 157.51ms p=0.023 n=600
tsserver-startup - node (v18.15.0, x64)
Execution time 229.67ms (± 0.14%) 229.41ms (± 0.17%) -0.26ms (- 0.11%) 228.15ms 236.96ms p=0.000 n=600
tsserverlibrary-startup - node (v18.15.0, x64)
Execution time 231.16ms (± 0.19%) 231.14ms (± 0.17%) ~ 229.44ms 235.98ms p=0.709 n=600
typescript-startup - node (v18.15.0, x64)
Execution time 231.95ms (± 0.18%) 231.86ms (± 0.17%) -0.10ms (- 0.04%) 230.31ms 237.91ms p=0.042 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

@typescript-bot
Copy link
Collaborator

Hey @gabritto, the results of running the DT tests are ready.
Everything looks the same!
You can check the log here.

@typescript-bot
Copy link
Collaborator

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

Something interesting changed - please have a look.

Details

backstage/backstage

6 of 13 projects failed to build with the old tsc and were ignored

packages/cli/templates/default-react-plugin-package/tsconfig.json

desktop/desktop

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

tsconfig.json

facebook/lexical

1 of 3 projects failed to build with the old tsc and were ignored

tsconfig.build.json

tsconfig.json

microsoft/vscode

3 of 54 projects failed to build with the old tsc and were ignored

extensions/ipynb/tsconfig.json

src/tsconfig.json

src/tsconfig.monaco.json

src/tsconfig.tsec.json

@gabritto gabritto marked this pull request as draft February 13, 2024 00:27
@gabritto
Copy link
Member Author

@typescript-bot pack this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Feb 13, 2024

Heya @gabritto, I've started to run the tarball bundle task on this PR at 511c333. You can monitor the build here.

@typescript-bot
Copy link
Collaborator

typescript-bot commented Feb 13, 2024

Hey @gabritto, 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/159848/artifacts?artifactName=tgz&fileId=011AA85405D82111A06A44EE654928EDD6140423301EF6371730757B226B1E3502&fileName=/typescript-5.4.0-insiders.20240213.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/pr-build@5.4.0-pr-57358-23".;

@gabritto
Copy link
Member Author

@typescript-bot run DT
@typescript-bot user test this
@typescript-bot test top200
@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Feb 13, 2024

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Feb 13, 2024

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Feb 13, 2024

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Feb 13, 2024

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

@gabritto Here are the results of running the user test suite comparing main and refs/pull/57358/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

@gabritto
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
Angular - node (v18.15.0, x64)
Memory used 295,676k (± 0.01%) 295,656k (± 0.01%) ~ 295,620k 295,682k p=0.471 n=6
Parse Time 2.67s (± 0.39%) 2.67s (± 0.28%) ~ 2.66s 2.68s p=0.931 n=6
Bind Time 0.83s (± 0.91%) 0.83s (± 0.76%) ~ 0.82s 0.84s p=0.718 n=6
Check Time 8.20s (± 0.37%) 8.25s (± 0.23%) +0.04s (+ 0.53%) 8.23s 8.27s p=0.016 n=6
Emit Time 7.09s (± 0.25%) 7.11s (± 0.28%) ~ 7.09s 7.14s p=0.120 n=6
Total Time 18.79s (± 0.28%) 18.85s (± 0.13%) +0.06s (+ 0.33%) 18.82s 18.89s p=0.024 n=6
Compiler-Unions - node (v18.15.0, x64)
Memory used 192,579k (± 1.30%) 192,045k (± 0.55%) ~ 191,553k 194,200k p=0.199 n=6
Parse Time 1.36s (± 0.30%) 1.35s (± 1.01%) ~ 1.33s 1.37s p=0.528 n=6
Bind Time 0.72s (± 0.00%) 0.72s (± 0.00%) ~ 0.72s 0.72s p=1.000 n=6
Check Time 9.35s (± 0.41%) 9.40s (± 0.41%) ~ 9.34s 9.45s p=0.106 n=6
Emit Time 2.63s (± 0.48%) 2.61s (± 0.79%) ~ 2.59s 2.64s p=0.188 n=6
Total Time 14.06s (± 0.26%) 14.09s (± 0.39%) ~ 14.01s 14.14s p=0.297 n=6
Monaco - node (v18.15.0, x64)
Memory used 347,473k (± 0.00%) 347,479k (± 0.01%) ~ 347,447k 347,514k p=0.471 n=6
Parse Time 2.47s (± 0.40%) 2.48s (± 0.51%) ~ 2.46s 2.49s p=0.270 n=6
Bind Time 0.92s (± 0.44%) 0.93s (± 0.56%) ~ 0.92s 0.93s p=0.112 n=6
Check Time 6.96s (± 0.45%) 6.93s (± 0.30%) ~ 6.91s 6.97s p=0.191 n=6
Emit Time 4.05s (± 0.30%) 4.06s (± 0.45%) ~ 4.04s 4.09s p=0.166 n=6
Total Time 14.40s (± 0.32%) 14.40s (± 0.17%) ~ 14.37s 14.43s p=0.935 n=6
TFS - node (v18.15.0, x64)
Memory used 302,843k (± 0.01%) 302,857k (± 0.00%) ~ 302,839k 302,874k p=0.336 n=6
Parse Time 2.01s (± 0.81%) 2.02s (± 0.52%) ~ 2.01s 2.04s p=0.073 n=6
Bind Time 1.00s (± 1.09%) 1.00s (± 1.17%) ~ 0.99s 1.02s p=0.729 n=6
Check Time 6.34s (± 0.46%) 6.35s (± 0.16%) ~ 6.33s 6.36s p=0.625 n=6
Emit Time 3.60s (± 0.52%) 3.58s (± 0.29%) ~ 3.57s 3.60s p=0.360 n=6
Total Time 12.94s (± 0.39%) 12.96s (± 0.09%) ~ 12.95s 12.98s p=0.332 n=6
material-ui - node (v18.15.0, x64)
Memory used 511,383k (± 0.01%) 511,397k (± 0.01%) ~ 511,371k 511,462k p=0.689 n=6
Parse Time 2.67s (± 1.18%) 2.65s (± 0.66%) ~ 2.63s 2.68s p=0.623 n=6
Bind Time 0.99s (± 1.43%) 0.99s (± 0.52%) ~ 0.99s 1.00s p=0.667 n=6
Check Time 17.27s (± 0.54%) 17.32s (± 0.28%) ~ 17.23s 17.37s p=0.173 n=6
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) ~ 0.00s 0.00s p=1.000 n=6
Total Time 20.93s (± 0.60%) 20.98s (± 0.16%) ~ 20.91s 21.00s p=0.198 n=6
mui-docs - node (v18.15.0, x64)
Memory used 2,270,594k (± 0.00%) 2,270,594k (± 0.00%) ~ 2,270,558k 2,270,633k p=1.000 n=6
Parse Time 11.88s (± 0.70%) 11.89s (± 1.03%) ~ 11.79s 12.11s p=0.748 n=6
Bind Time 2.63s (± 0.37%) 2.63s (± 0.20%) ~ 2.63s 2.64s p=0.504 n=6
Check Time 101.09s (± 0.69%) 101.93s (± 0.79%) ~ 100.56s 102.82s p=0.109 n=6
Emit Time 0.32s (± 0.00%) 0.32s (± 1.63%) ~ 0.31s 0.32s p=0.174 n=6
Total Time 115.92s (± 0.58%) 116.77s (± 0.69%) ~ 115.35s 117.56s p=0.093 n=6
self-build-src - node (v18.15.0, x64)
Memory used 2,414,053k (± 0.02%) 2,414,767k (± 0.02%) +714k (+ 0.03%) 2,414,134k 2,415,540k p=0.045 n=6
Parse Time 4.89s (± 0.68%) 4.95s (± 1.00%) +0.06s (+ 1.29%) 4.90s 5.03s p=0.031 n=6
Bind Time 1.88s (± 0.78%) 1.86s (± 0.74%) ~ 1.85s 1.89s p=0.118 n=6
Check Time 33.37s (± 0.43%) 33.68s (± 0.23%) +0.31s (+ 0.92%) 33.59s 33.79s p=0.005 n=6
Emit Time 2.69s (± 0.88%) 2.69s (± 2.29%) ~ 2.61s 2.77s p=1.000 n=6
Total Time 42.85s (± 0.34%) 43.21s (± 0.19%) +0.36s (+ 0.84%) 43.11s 43.31s p=0.005 n=6
self-compiler - node (v18.15.0, x64)
Memory used 418,762k (± 0.01%) 418,880k (± 0.01%) +118k (+ 0.03%) 418,843k 418,954k p=0.005 n=6
Parse Time 2.81s (± 2.74%) 2.80s (± 2.30%) ~ 2.67s 2.85s p=0.513 n=6
Bind Time 1.10s (± 5.00%) 1.10s (± 4.54%) ~ 1.07s 1.20s p=0.787 n=6
Check Time 15.11s (± 0.31%) 15.15s (± 0.35%) ~ 15.07s 15.20s p=0.230 n=6
Emit Time 1.14s (± 1.20%) 1.14s (± 1.33%) ~ 1.12s 1.16s p=0.868 n=6
Total Time 20.16s (± 0.37%) 20.18s (± 0.36%) ~ 20.07s 20.25s p=0.810 n=6
vscode - node (v18.15.0, x64)
Memory used 2,833,163k (± 0.00%) 2,833,197k (± 0.00%) ~ 2,833,147k 2,833,261k p=0.173 n=6
Parse Time 10.77s (± 0.33%) 10.73s (± 0.34%) ~ 10.68s 10.77s p=0.121 n=6
Bind Time 3.43s (± 0.31%) 3.42s (± 0.60%) ~ 3.39s 3.45s p=0.869 n=6
Check Time 60.11s (± 0.28%) 60.19s (± 0.55%) ~ 59.94s 60.82s p=1.000 n=6
Emit Time 16.17s (± 0.44%) 16.20s (± 0.81%) ~ 15.97s 16.31s p=0.335 n=6
Total Time 90.48s (± 0.22%) 90.54s (± 0.27%) ~ 90.31s 90.91s p=0.471 n=6
webpack - node (v18.15.0, x64)
Memory used 394,028k (± 0.01%) 394,083k (± 0.01%) +55k (+ 0.01%) 394,043k 394,104k p=0.013 n=6
Parse Time 3.11s (± 0.92%) 3.10s (± 0.83%) ~ 3.06s 3.13s p=0.629 n=6
Bind Time 1.38s (± 0.40%) 1.38s (± 0.99%) ~ 1.37s 1.40s p=0.341 n=6
Check Time 14.01s (± 0.36%) 14.08s (± 0.30%) +0.08s (+ 0.55%) 14.02s 14.13s p=0.030 n=6
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) ~ 0.00s 0.00s p=1.000 n=6
Total Time 18.50s (± 0.39%) 18.57s (± 0.31%) ~ 18.51s 18.64s p=0.128 n=6
xstate - node (v18.15.0, x64)
Memory used 513,378k (± 0.01%) 513,388k (± 0.01%) ~ 513,346k 513,416k p=0.810 n=6
Parse Time 3.27s (± 0.19%) 3.27s (± 0.46%) ~ 3.26s 3.30s p=1.000 n=6
Bind Time 1.54s (± 0.26%) 1.54s (± 0.00%) ~ 1.54s 1.54s p=0.405 n=6
Check Time 2.84s (± 0.39%) 2.85s (± 0.48%) ~ 2.84s 2.87s p=0.187 n=6
Emit Time 0.08s (± 0.00%) 0.08s (± 0.00%) ~ 0.08s 0.08s p=1.000 n=6
Total Time 7.74s (± 0.19%) 7.75s (± 0.47%) ~ 7.71s 7.81s p=0.625 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)
  • mui-docs - node (v18.15.0, x64)
  • self-build-src - node (v18.15.0, x64)
  • self-compiler - node (v18.15.0, x64)
  • vscode - node (v18.15.0, x64)
  • webpack - 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,350ms (± 0.63%) 2,342ms (± 0.56%) ~ 2,329ms 2,361ms p=0.230 n=6
Req 2 - geterr 5,531ms (± 1.43%) 5,567ms (± 1.70%) ~ 5,457ms 5,678ms p=0.575 n=6
Req 3 - references 323ms (± 0.32%) 324ms (± 0.53%) ~ 322ms 326ms p=0.208 n=6
Req 4 - navto 276ms (± 1.39%) 277ms (± 0.91%) ~ 272ms 279ms p=0.935 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 89ms (± 6.57%) 86ms (± 9.31%) ~ 79ms 94ms p=0.934 n=6
CompilerTSServer - node (v18.15.0, x64)
Req 1 - updateOpen 2,485ms (± 0.67%) 2,492ms (± 0.66%) ~ 2,467ms 2,514ms p=0.471 n=6
Req 2 - geterr 4,198ms (± 1.90%) 4,169ms (± 1.49%) ~ 4,114ms 4,249ms p=0.521 n=6
Req 3 - references 334ms (± 1.28%) 338ms (± 1.42%) ~ 333ms 343ms p=0.070 n=6
Req 4 - navto 283ms (± 0.47%) 286ms (± 1.06%) ~ 282ms 291ms p=0.104 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 79ms (± 7.48%) 86ms (± 7.40%) ~ 77ms 90ms p=0.157 n=6
xstateTSServer - node (v18.15.0, x64)
Req 1 - updateOpen 2,603ms (± 0.58%) 2,611ms (± 0.38%) ~ 2,593ms 2,619ms p=0.297 n=6
Req 2 - geterr 1,693ms (± 2.29%) 1,747ms (± 2.25%) +54ms (+ 3.21%) 1,675ms 1,779ms p=0.045 n=6
Req 3 - references 118ms (± 9.56%) 117ms (± 9.71%) ~ 106ms 128ms p=0.323 n=6
Req 4 - navto 371ms (± 0.28%) 370ms (± 0.61%) ~ 365ms 371ms p=0.310 n=6
Req 5 - completionInfo count 2,078 (± 0.00%) 2,078 (± 0.00%) ~ 2,078 2,078 p=1.000 n=6
Req 5 - completionInfo 307ms (± 0.95%) 312ms (± 1.54%) ~ 306ms 318ms p=0.053 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

startup

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
tsc-startup - node (v18.15.0, x64)
Execution time 154.42ms (± 0.20%) 154.22ms (± 0.18%) -0.20ms (- 0.13%) 153.11ms 158.35ms p=0.000 n=600
tsserver-startup - node (v18.15.0, x64)
Execution time 229.71ms (± 0.17%) 229.58ms (± 0.17%) -0.13ms (- 0.06%) 228.28ms 236.63ms p=0.000 n=600
tsserverlibrary-startup - node (v18.15.0, x64)
Execution time 231.22ms (± 0.18%) 231.29ms (± 0.18%) ~ 229.65ms 234.43ms p=0.112 n=600
typescript-startup - node (v18.15.0, x64)
Execution time 230.90ms (± 0.17%) 230.92ms (± 0.18%) ~ 229.44ms 237.47ms p=0.935 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

@typescript-bot
Copy link
Collaborator

Hey @gabritto, the results of running the DT tests are ready.
Everything looks the same!
You can check the log here.

@typescript-bot
Copy link
Collaborator

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

Everything looks good!

@gabritto
Copy link
Member Author

@typescript-bot perf test this faster

@typescript-bot
Copy link
Collaborator

typescript-bot commented Feb 13, 2024

Heya @gabritto, I've started to run the faster perf test suite on this PR at ad62d2c. You can monitor the build here.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

@gabritto
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
Angular - node (v18.15.0, x64)
Memory used 295,679k (± 0.01%) 295,668k (± 0.01%) ~ 295,610k 295,727k p=0.575 n=6
Parse Time 2.66s (± 0.39%) 2.66s (± 0.28%) ~ 2.65s 2.67s p=0.437 n=6
Bind Time 0.83s (± 1.32%) 0.83s (± 1.46%) ~ 0.82s 0.85s p=0.432 n=6
Check Time 8.22s (± 0.30%) 8.24s (± 0.23%) ~ 8.22s 8.27s p=0.146 n=6
Emit Time 7.10s (± 0.22%) 7.11s (± 0.54%) ~ 7.07s 7.18s p=1.000 n=6
Total Time 18.81s (± 0.10%) 18.85s (± 0.26%) ~ 18.80s 18.93s p=0.105 n=6
Compiler-Unions - node (v18.15.0, x64)
Memory used 193,498k (± 1.56%) 192,558k (± 1.23%) ~ 191,524k 197,414k p=0.936 n=6
Parse Time 1.36s (± 0.80%) 1.36s (± 0.38%) ~ 1.35s 1.36s p=0.784 n=6
Bind Time 0.72s (± 0.00%) 0.72s (± 0.00%) ~ 0.72s 0.72s p=1.000 n=6
Check Time 9.37s (± 0.40%) 9.36s (± 0.27%) ~ 9.33s 9.40s p=0.625 n=6
Emit Time 2.61s (± 0.75%) 2.61s (± 0.54%) ~ 2.59s 2.63s p=1.000 n=6
Total Time 14.07s (± 0.48%) 14.05s (± 0.19%) ~ 14.01s 14.08s p=0.871 n=6
Monaco - node (v18.15.0, x64)
Memory used 347,473k (± 0.01%) 347,472k (± 0.00%) ~ 347,458k 347,486k p=1.000 n=6
Parse Time 2.49s (± 0.70%) 2.48s (± 0.51%) ~ 2.46s 2.49s p=0.323 n=6
Bind Time 0.93s (± 0.00%) 0.93s (± 0.56%) ~ 0.92s 0.93s p=0.174 n=6
Check Time 6.97s (± 0.28%) 6.95s (± 0.26%) ~ 6.93s 6.98s p=0.142 n=6
Emit Time 4.06s (± 0.55%) 4.05s (± 0.46%) ~ 4.03s 4.08s p=0.685 n=6
Total Time 14.43s (± 0.35%) 14.41s (± 0.22%) ~ 14.37s 14.46s p=0.335 n=6
TFS - node (v18.15.0, x64)
Memory used 302,860k (± 0.01%) 302,856k (± 0.01%) ~ 302,816k 302,873k p=0.689 n=6
Parse Time 2.01s (± 0.75%) 2.01s (± 0.54%) ~ 2.00s 2.03s p=0.933 n=6
Bind Time 1.00s (± 1.09%) 1.01s (± 1.02%) ~ 1.00s 1.02s p=0.241 n=6
Check Time 6.36s (± 0.28%) 6.34s (± 0.26%) ~ 6.32s 6.36s p=0.255 n=6
Emit Time 3.60s (± 0.46%) 3.59s (± 0.74%) ~ 3.55s 3.63s p=0.405 n=6
Total Time 12.98s (± 0.18%) 12.95s (± 0.33%) ~ 12.88s 13.01s p=0.295 n=6
material-ui - node (v18.15.0, x64)
Memory used 511,377k (± 0.00%) 511,391k (± 0.00%) ~ 511,373k 511,424k p=0.298 n=6
Parse Time 2.66s (± 0.28%) 2.65s (± 0.50%) ~ 2.63s 2.67s p=0.155 n=6
Bind Time 1.00s (± 1.05%) 0.99s (± 1.05%) ~ 0.97s 1.00s p=0.241 n=6
Check Time 17.28s (± 0.44%) 17.28s (± 0.35%) ~ 17.20s 17.38s p=0.809 n=6
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) ~ 0.00s 0.00s p=1.000 n=6
Total Time 20.93s (± 0.39%) 20.92s (± 0.35%) ~ 20.84s 21.04s p=0.872 n=6
mui-docs - node (v18.15.0, x64)
Memory used 2,270,727k (± 0.00%) 2,270,720k (± 0.00%) ~ 2,270,632k 2,270,761k p=1.000 n=6
Parse Time 11.90s (± 0.68%) 11.89s (± 0.77%) ~ 11.79s 12.02s p=0.872 n=6
Bind Time 2.63s (± 0.34%) 2.63s (± 0.29%) ~ 2.62s 2.64s p=0.798 n=6
Check Time 101.33s (± 1.09%) 101.64s (± 0.74%) ~ 100.30s 102.57s p=0.298 n=6
Emit Time 0.31s (± 1.31%) 0.32s (± 1.27%) +0.01s (+ 3.21%) 0.32s 0.33s p=0.008 n=6
Total Time 116.17s (± 0.96%) 116.48s (± 0.63%) ~ 115.20s 117.32s p=0.378 n=6
self-build-src - node (v18.15.0, x64)
Memory used 2,414,132k (± 0.02%) 2,414,768k (± 0.03%) ~ 2,413,863k 2,415,372k p=0.093 n=6
Parse Time 4.92s (± 1.36%) 4.97s (± 1.19%) ~ 4.94s 5.09s p=0.228 n=6
Bind Time 1.89s (± 0.55%) 1.86s (± 0.68%) -0.03s (- 1.41%) 1.85s 1.88s p=0.012 n=6
Check Time 33.42s (± 0.30%) 33.53s (± 0.20%) ~ 33.47s 33.65s p=0.054 n=6
Emit Time 2.65s (± 1.67%) 2.66s (± 1.94%) ~ 2.58s 2.73s p=0.520 n=6
Total Time 42.89s (± 0.35%) 43.04s (± 0.25%) ~ 42.87s 43.14s p=0.065 n=6
self-compiler - node (v18.15.0, x64)
Memory used 418,789k (± 0.01%) 418,855k (± 0.01%) +66k (+ 0.02%) 418,802k 418,889k p=0.020 n=6
Parse Time 2.76s (± 2.87%) 2.82s (± 0.96%) ~ 2.79s 2.86s p=0.288 n=6
Bind Time 1.14s (± 6.41%) 1.08s (± 0.51%) ~ 1.07s 1.08s p=0.091 n=6
Check Time 15.12s (± 0.47%) 15.15s (± 0.36%) ~ 15.07s 15.20s p=0.467 n=6
Emit Time 1.14s (± 0.91%) 1.15s (± 1.59%) ~ 1.13s 1.18s p=0.113 n=6
Total Time 20.16s (± 0.32%) 20.20s (± 0.36%) ~ 20.07s 20.27s p=0.421 n=6
vscode - node (v18.15.0, x64)
Memory used 2,835,633k (± 0.00%) 2,835,649k (± 0.00%) ~ 2,835,594k 2,835,684k p=0.810 n=6
Parse Time 10.71s (± 0.17%) 10.72s (± 0.20%) ~ 10.69s 10.75s p=0.746 n=6
Bind Time 3.44s (± 0.68%) 3.42s (± 0.37%) ~ 3.40s 3.43s p=0.251 n=6
Check Time 60.45s (± 0.24%) 60.54s (± 0.70%) ~ 60.03s 61.10s p=0.748 n=6
Emit Time 16.22s (± 0.63%) 16.27s (± 0.59%) ~ 16.15s 16.39s p=0.423 n=6
Total Time 90.81s (± 0.26%) 90.95s (± 0.58%) ~ 90.36s 91.61s p=0.810 n=6
webpack - node (v18.15.0, x64)
Memory used 394,015k (± 0.01%) 394,110k (± 0.02%) ~ 394,009k 394,205k p=0.078 n=6
Parse Time 3.12s (± 0.57%) 3.10s (± 0.43%) -0.02s (- 0.69%) 3.08s 3.12s p=0.041 n=6
Bind Time 1.38s (± 1.16%) 1.38s (± 0.89%) ~ 1.37s 1.40s p=0.341 n=6
Check Time 14.05s (± 0.40%) 14.09s (± 0.40%) ~ 14.01s 14.16s p=0.378 n=6
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) ~ 0.00s 0.00s p=1.000 n=6
Total Time 18.55s (± 0.33%) 18.56s (± 0.30%) ~ 18.48s 18.64s p=0.688 n=6
xstate - node (v18.15.0, x64)
Memory used 513,362k (± 0.01%) 513,368k (± 0.01%) ~ 513,338k 513,418k p=0.810 n=6
Parse Time 3.27s (± 0.45%) 3.28s (± 0.26%) ~ 3.26s 3.28s p=0.797 n=6
Bind Time 1.54s (± 0.33%) 1.54s (± 0.26%) ~ 1.54s 1.55s p=0.595 n=6
Check Time 2.85s (± 0.52%) 2.86s (± 0.65%) ~ 2.84s 2.88s p=0.462 n=6
Emit Time 0.08s (± 0.00%) 0.08s (± 5.21%) ~ 0.07s 0.08s p=0.405 n=6
Total Time 7.75s (± 0.25%) 7.76s (± 0.18%) ~ 7.75s 7.79s p=0.243 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)
  • mui-docs - node (v18.15.0, x64)
  • self-build-src - node (v18.15.0, x64)
  • self-compiler - node (v18.15.0, x64)
  • vscode - node (v18.15.0, x64)
  • webpack - node (v18.15.0, x64)
  • xstate - node (v18.15.0, x64)
Benchmark Name Iterations
Current pr 6
Baseline baseline 6

Developer Information:

Download Benchmarks

@gabritto gabritto marked this pull request as ready for review February 13, 2024 19:18
@gabritto gabritto merged commit a641405 into main Feb 13, 2024
19 checks passed
@gabritto gabritto deleted the gabritto/issue45770 branch February 13, 2024 19:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Author: Team For Milestone Bug PRs that fix a bug with a specific milestone
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Narrowing discriminated union via type predicate and type assertion results in different behavior.
3 participants