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

Reintroduce definitelyAssignableRelation and use with conditional types #39577

Closed
wants to merge 11 commits into from

Conversation

ahejlsberg
Copy link
Member

@ahejlsberg ahejlsberg commented Jul 13, 2020

Fixes #39364.

@ahejlsberg
Copy link
Member Author

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

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jul 13, 2020

Heya @ahejlsberg, I've started to run the extended test suite on this PR at 854229a. You can monitor the build here.

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jul 13, 2020

Heya @ahejlsberg, I've started to run the parallelized community code test suite on this PR at 854229a. You can monitor the build here.

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jul 13, 2020

Heya @ahejlsberg, I've started to run the perf test suite on this PR at 854229a. You can monitor the build here.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jul 13, 2020

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

@typescript-bot
Copy link
Collaborator

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

Here they are:

Comparison Report - master..39577

Metric master 39577 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 343,868k (± 0.02%) 343,446k (± 0.02%) -422k (- 0.12%) 343,251k 343,599k
Parse Time 2.00s (± 0.59%) 2.00s (± 0.57%) -0.00s (- 0.15%) 1.98s 2.02s
Bind Time 0.81s (± 0.80%) 0.81s (± 0.42%) +0.00s (+ 0.12%) 0.81s 0.82s
Check Time 4.74s (± 0.62%) 4.73s (± 0.67%) -0.01s (- 0.13%) 4.69s 4.82s
Emit Time 5.19s (± 0.44%) 5.17s (± 0.55%) -0.02s (- 0.31%) 5.12s 5.22s
Total Time 12.74s (± 0.33%) 12.71s (± 0.39%) -0.02s (- 0.17%) 12.62s 12.83s
Monaco - node (v10.16.3, x64)
Memory used 339,184k (± 0.03%) 339,136k (± 0.01%) -48k (- 0.01%) 339,038k 339,245k
Parse Time 1.58s (± 0.55%) 1.58s (± 0.64%) -0.00s (- 0.13%) 1.56s 1.60s
Bind Time 0.71s (± 0.73%) 0.71s (± 0.73%) 0.00s ( 0.00%) 0.70s 0.72s
Check Time 4.90s (± 0.58%) 4.89s (± 0.79%) -0.01s (- 0.14%) 4.82s 4.99s
Emit Time 2.74s (± 0.58%) 2.75s (± 0.89%) +0.01s (+ 0.36%) 2.71s 2.82s
Total Time 9.93s (± 0.38%) 9.93s (± 0.63%) +0.00s (+ 0.03%) 9.84s 10.11s
TFS - node (v10.16.3, x64)
Memory used 302,020k (± 0.02%) 302,072k (± 0.04%) +52k (+ 0.02%) 301,826k 302,453k
Parse Time 1.21s (± 0.66%) 1.21s (± 0.37%) -0.00s (- 0.00%) 1.20s 1.22s
Bind Time 0.67s (± 0.70%) 0.67s (± 1.14%) -0.00s (- 0.60%) 0.64s 0.68s
Check Time 4.38s (± 0.69%) 4.40s (± 0.62%) +0.02s (+ 0.48%) 4.34s 4.47s
Emit Time 2.89s (± 1.60%) 2.90s (± 0.74%) +0.02s (+ 0.55%) 2.83s 2.94s
Total Time 9.14s (± 0.72%) 9.18s (± 0.51%) +0.03s (+ 0.37%) 9.09s 9.28s
material-ui - node (v10.16.3, x64)
Memory used 459,408k (± 0.01%) 462,786k (± 0.01%) +3,378k (+ 0.74%) 462,697k 462,898k
Parse Time 2.04s (± 0.53%) 2.03s (± 0.47%) -0.01s (- 0.29%) 2.02s 2.06s
Bind Time 0.65s (± 1.12%) 0.64s (± 1.48%) -0.01s (- 1.23%) 0.63s 0.66s
Check Time 12.84s (± 0.41%) 13.27s (± 0.55%) +0.43s (+ 3.36%) 13.15s 13.51s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.53s (± 0.35%) 15.95s (± 0.50%) +0.41s (+ 2.67%) 15.84s 16.22s
Angular - node (v12.1.0, x64)
Memory used 321,196k (± 0.03%) 320,739k (± 0.03%) -457k (- 0.14%) 320,501k 320,894k
Parse Time 1.99s (± 0.61%) 1.99s (± 0.57%) -0.01s (- 0.25%) 1.97s 2.01s
Bind Time 0.80s (± 0.43%) 0.81s (± 0.74%) +0.01s (+ 1.00%) 0.80s 0.82s
Check Time 4.62s (± 0.46%) 4.62s (± 0.47%) +0.00s (+ 0.11%) 4.58s 4.67s
Emit Time 5.37s (± 0.43%) 5.35s (± 1.27%) -0.02s (- 0.30%) 5.29s 5.62s
Total Time 12.77s (± 0.32%) 12.77s (± 0.69%) -0.01s (- 0.05%) 12.68s 13.10s
Monaco - node (v12.1.0, x64)
Memory used 321,534k (± 0.03%) 321,541k (± 0.02%) +7k (+ 0.00%) 321,389k 321,692k
Parse Time 1.55s (± 0.95%) 1.54s (± 1.08%) -0.01s (- 0.52%) 1.50s 1.57s
Bind Time 0.69s (± 0.97%) 0.69s (± 0.83%) +0.00s (+ 0.44%) 0.68s 0.71s
Check Time 4.66s (± 0.47%) 4.67s (± 0.52%) +0.01s (+ 0.17%) 4.63s 4.73s
Emit Time 2.78s (± 0.53%) 2.81s (± 0.98%) +0.03s (+ 1.08%) 2.76s 2.86s
Total Time 9.68s (± 0.42%) 9.71s (± 0.63%) +0.04s (+ 0.38%) 9.59s 9.85s
TFS - node (v12.1.0, x64)
Memory used 286,546k (± 0.03%) 286,498k (± 0.02%) -48k (- 0.02%) 286,331k 286,580k
Parse Time 1.23s (± 0.73%) 1.24s (± 0.90%) +0.01s (+ 0.73%) 1.21s 1.26s
Bind Time 0.64s (± 0.73%) 0.64s (± 0.73%) 0.00s ( 0.00%) 0.63s 0.65s
Check Time 4.29s (± 0.72%) 4.32s (± 0.58%) +0.02s (+ 0.56%) 4.28s 4.38s
Emit Time 2.93s (± 1.07%) 2.93s (± 0.49%) +0.00s (+ 0.07%) 2.90s 2.96s
Total Time 9.08s (± 0.72%) 9.12s (± 0.52%) +0.04s (+ 0.41%) 9.03s 9.23s
material-ui - node (v12.1.0, x64)
Memory used 437,711k (± 0.05%) 441,005k (± 0.05%) +3,294k (+ 0.75%) 440,221k 441,172k
Parse Time 2.03s (± 0.79%) 2.02s (± 0.68%) -0.00s (- 0.10%) 2.00s 2.06s
Bind Time 0.63s (± 1.21%) 0.62s (± 1.09%) -0.00s (- 0.32%) 0.61s 0.64s
Check Time 11.57s (± 0.69%) 11.93s (± 0.89%) +0.36s (+ 3.13%) 11.75s 12.22s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 14.22s (± 0.66%) 14.58s (± 0.79%) +0.36s (+ 2.54%) 14.38s 14.91s
Angular - node (v8.9.0, x64)
Memory used 340,436k (± 0.02%) 340,102k (± 0.02%) -334k (- 0.10%) 340,000k 340,262k
Parse Time 2.53s (± 0.71%) 2.53s (± 0.49%) +0.00s (+ 0.16%) 2.50s 2.56s
Bind Time 0.85s (± 0.65%) 0.84s (± 0.81%) -0.01s (- 0.82%) 0.83s 0.86s
Check Time 5.35s (± 0.46%) 5.36s (± 0.33%) +0.02s (+ 0.28%) 5.32s 5.40s
Emit Time 5.88s (± 0.92%) 5.97s (± 0.70%) +0.08s (+ 1.38%) 5.87s 6.07s
Total Time 14.61s (± 0.39%) 14.71s (± 0.30%) +0.09s (+ 0.64%) 14.61s 14.82s
Monaco - node (v8.9.0, x64)
Memory used 340,487k (± 0.02%) 340,481k (± 0.02%) -6k (- 0.00%) 340,406k 340,668k
Parse Time 1.87s (± 0.35%) 1.87s (± 0.45%) -0.00s (- 0.16%) 1.85s 1.88s
Bind Time 0.88s (± 0.45%) 0.88s (± 0.56%) +0.00s (+ 0.57%) 0.88s 0.90s
Check Time 5.37s (± 0.46%) 5.42s (± 0.52%) +0.05s (+ 0.91%) 5.35s 5.47s
Emit Time 3.21s (± 0.43%) 3.24s (± 0.70%) +0.03s (+ 0.78%) 3.20s 3.29s
Total Time 11.33s (± 0.30%) 11.40s (± 0.40%) +0.07s (+ 0.64%) 11.33s 11.51s
TFS - node (v8.9.0, x64)
Memory used 303,828k (± 0.01%) 303,793k (± 0.02%) -35k (- 0.01%) 303,650k 303,941k
Parse Time 1.54s (± 0.37%) 1.54s (± 0.62%) +0.00s (+ 0.26%) 1.52s 1.57s
Bind Time 0.67s (± 0.87%) 0.67s (± 0.71%) 0.00s ( 0.00%) 0.66s 0.68s
Check Time 5.01s (± 1.35%) 5.04s (± 1.90%) +0.03s (+ 0.64%) 4.84s 5.19s
Emit Time 3.07s (± 3.08%) 3.02s (± 3.34%) -0.05s (- 1.79%) 2.85s 3.20s
Total Time 10.29s (± 0.32%) 10.27s (± 0.37%) -0.02s (- 0.20%) 10.19s 10.33s
material-ui - node (v8.9.0, x64)
Memory used 463,671k (± 0.01%) 467,097k (± 0.01%) +3,426k (+ 0.74%) 466,988k 467,292k
Parse Time 2.38s (± 0.27%) 2.38s (± 0.20%) +0.00s (+ 0.04%) 2.37s 2.39s
Bind Time 0.77s (± 1.79%) 0.77s (± 1.25%) -0.00s (- 0.26%) 0.75s 0.79s
Check Time 17.24s (± 0.62%) 17.64s (± 0.97%) +0.40s (+ 2.30%) 17.21s 18.01s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 20.39s (± 0.53%) 20.79s (± 0.81%) +0.40s (+ 1.95%) 20.38s 21.17s
Angular - node (v8.9.0, x86)
Memory used 195,303k (± 0.01%) 195,118k (± 0.04%) -185k (- 0.09%) 194,961k 195,267k
Parse Time 2.46s (± 1.09%) 2.45s (± 0.95%) -0.00s (- 0.12%) 2.40s 2.51s
Bind Time 0.99s (± 0.96%) 0.98s (± 1.03%) -0.00s (- 0.10%) 0.97s 1.02s
Check Time 4.84s (± 0.51%) 4.81s (± 0.49%) -0.03s (- 0.68%) 4.76s 4.86s
Emit Time 5.87s (± 1.07%) 5.87s (± 1.00%) -0.00s (- 0.03%) 5.68s 5.97s
Total Time 14.16s (± 0.37%) 14.12s (± 0.61%) -0.04s (- 0.26%) 13.85s 14.26s
Monaco - node (v8.9.0, x86)
Memory used 193,488k (± 0.02%) 193,506k (± 0.02%) +18k (+ 0.01%) 193,385k 193,593k
Parse Time 1.91s (± 0.97%) 1.91s (± 0.54%) -0.00s (- 0.16%) 1.89s 1.94s
Bind Time 0.70s (± 0.74%) 0.70s (± 0.53%) -0.00s (- 0.57%) 0.69s 0.70s
Check Time 5.51s (± 0.48%) 5.50s (± 0.44%) -0.01s (- 0.20%) 5.45s 5.55s
Emit Time 2.67s (± 0.74%) 2.67s (± 0.49%) -0.01s (- 0.22%) 2.64s 2.70s
Total Time 10.80s (± 0.46%) 10.78s (± 0.27%) -0.02s (- 0.21%) 10.73s 10.86s
TFS - node (v8.9.0, x86)
Memory used 173,807k (± 0.03%) 173,747k (± 0.02%) -60k (- 0.03%) 173,684k 173,816k
Parse Time 1.59s (± 0.91%) 1.59s (± 0.74%) +0.00s (+ 0.13%) 1.56s 1.61s
Bind Time 0.64s (± 1.25%) 0.64s (± 0.75%) -0.01s (- 0.78%) 0.63s 0.65s
Check Time 4.68s (± 0.59%) 4.68s (± 0.84%) +0.00s (+ 0.09%) 4.63s 4.81s
Emit Time 2.80s (± 0.98%) 2.79s (± 0.88%) -0.01s (- 0.36%) 2.74s 2.84s
Total Time 9.71s (± 0.50%) 9.70s (± 0.56%) -0.01s (- 0.11%) 9.59s 9.88s
material-ui - node (v8.9.0, x86)
Memory used 262,553k (± 0.01%) 264,368k (± 0.01%) +1,815k (+ 0.69%) 264,281k 264,440k
Parse Time 2.45s (± 0.72%) 2.45s (± 0.77%) +0.00s (+ 0.16%) 2.42s 2.49s
Bind Time 0.66s (± 1.42%) 0.67s (± 1.20%) +0.00s (+ 0.75%) 0.65s 0.69s
Check Time 15.59s (± 0.61%) 16.24s (± 0.55%) +0.65s (+ 4.17%) 16.05s 16.46s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 18.70s (± 0.53%) 19.36s (± 0.51%) +0.66s (+ 3.53%) 19.13s 19.62s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-166-generic
Architecturex64
Available Memory16 GB
Available Memory1 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v10.16.3, x64)
  • node (v12.1.0, x64)
  • node (v8.9.0, x64)
  • node (v8.9.0, x86)
Scenarios
  • Angular - node (v10.16.3, x64)
  • Angular - node (v12.1.0, x64)
  • Angular - node (v8.9.0, x64)
  • Angular - node (v8.9.0, x86)
  • Monaco - node (v10.16.3, x64)
  • Monaco - node (v12.1.0, x64)
  • Monaco - node (v8.9.0, x64)
  • Monaco - node (v8.9.0, x86)
  • TFS - node (v10.16.3, x64)
  • TFS - node (v12.1.0, x64)
  • TFS - node (v8.9.0, x64)
  • TFS - node (v8.9.0, x86)
  • material-ui - node (v10.16.3, x64)
  • material-ui - node (v12.1.0, x64)
  • material-ui - node (v8.9.0, x64)
  • material-ui - node (v8.9.0, x86)
Benchmark Name Iterations
Current 39577 10
Baseline master 10

@ahejlsberg
Copy link
Member Author

Tests are clean (failures are all preexisting conditions). Except for materual-ui, performance is unaffected. Compile time for material-ui is about 2.5% slower. Not surprising since this code base heavily exercises type relationships, some of which we'll now compute twice.

if (source.flags & TypeFlags.Index) {
if (result = isRelatedTo(targetType, (<IndexType>source).type, /*reportErrors*/ false)) {
return result;
if (relation !== definitelyAssignableRelation) {
Copy link
Member

Choose a reason for hiding this comment

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

Why does the definite assignment relation skip over relating keyof S and keyof T?

Copy link
Member Author

Choose a reason for hiding this comment

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

If we have two keyof types, then S and T are distinct generic types. Since they're not the same type and generic types have no constraints under this relationship, seems there's no point in further exploration. Also, if I change to include this check we get circularity errors in the circularlySimplifyingConditionalTypesNoCrash.ts test plus error baseline changes in two other similar tests.

Copy link
Member

@weswigham weswigham Jul 14, 2020

Choose a reason for hiding this comment

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

What if we're relating keyof S to keyof substitute(S, S & T)?

Copy link
Member

@weswigham weswigham Jul 17, 2020

Choose a reason for hiding this comment

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

Or even keyof S to keyof Q[T] where the value of Q[T] is only ever S (eg, because every property in a concrete Q is of type S)?

@DanielRosenwasser
Copy link
Member

some of which we'll now compute twice.

A lot of type relationships are subsets or supersets of others (i.e. identiticalsubtype ofassignable tocomparable to). It's not clear to me that that's the case with the definitelyAssignable relationship - maybe it's a subset of assignable to?

Either way, I experimented with a layered cache check that leveraged that a few years back, but saw no real difference on the codebase. You might see it in a stress test like material-ui though.

@ahejlsberg
Copy link
Member Author

A lot of type relationships are subsets or supersets of others (i.e. identitical ≤ subtype of ≤ assignable to ≤ comparable to). It's not clear to me that that's the case with the definitelyAssignable relationship - maybe it's a subset of assignable to?

It's a subset of the assignable-to relation in the sense that when assignable-to is false then definitely-assignable-to is also false. It's possible we might save time in our determination of whether to defer conditional types by first checking for assignable-to and, only when that's true, then checking for definitely-assignable-to. But of course were then doing even more work in the true case.

@ahejlsberg
Copy link
Member Author

Latest commit is an experiment to see the effects of checking assignable-to before definitely-assignable-to. Note that there are baseline changes because the more aggressive constraint explorations of assignable-to cause circularity errors.

@ahejlsberg
Copy link
Member Author

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jul 13, 2020

Heya @ahejlsberg, I've started to run the perf test suite on this PR at 289ba80. You can monitor the build here.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

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

Here they are:

Comparison Report - master..39577

Metric master 39577 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 343,513k (± 0.02%) 343,427k (± 0.03%) -85k (- 0.02%) 343,236k 343,644k
Parse Time 2.00s (± 0.58%) 2.00s (± 0.73%) -0.01s (- 0.30%) 1.97s 2.04s
Bind Time 0.81s (± 0.69%) 0.82s (± 0.83%) +0.01s (+ 0.99%) 0.81s 0.83s
Check Time 4.74s (± 0.32%) 4.73s (± 0.62%) -0.00s (- 0.02%) 4.67s 4.81s
Emit Time 5.17s (± 0.82%) 5.18s (± 0.60%) +0.01s (+ 0.21%) 5.10s 5.23s
Total Time 12.72s (± 0.41%) 12.73s (± 0.37%) +0.01s (+ 0.06%) 12.63s 12.81s
Monaco - node (v10.16.3, x64)
Memory used 338,933k (± 0.03%) 339,145k (± 0.02%) +212k (+ 0.06%) 339,010k 339,344k
Parse Time 1.58s (± 1.08%) 1.58s (± 0.87%) +0.00s (+ 0.06%) 1.56s 1.62s
Bind Time 0.71s (± 0.56%) 0.71s (± 0.73%) 0.00s ( 0.00%) 0.70s 0.72s
Check Time 4.87s (± 0.34%) 4.90s (± 0.73%) +0.03s (+ 0.62%) 4.85s 4.98s
Emit Time 2.74s (± 0.98%) 2.75s (± 0.66%) +0.00s (+ 0.11%) 2.70s 2.79s
Total Time 9.90s (± 0.38%) 9.93s (± 0.60%) +0.03s (+ 0.33%) 9.81s 10.05s
TFS - node (v10.16.3, x64)
Memory used 301,831k (± 0.01%) 302,090k (± 0.02%) +259k (+ 0.09%) 301,939k 302,304k
Parse Time 1.21s (± 0.39%) 1.21s (± 0.55%) +0.00s (+ 0.25%) 1.20s 1.23s
Bind Time 0.66s (± 1.06%) 0.67s (± 0.50%) +0.01s (+ 1.36%) 0.66s 0.68s
Check Time 4.37s (± 0.79%) 4.40s (± 0.39%) +0.03s (+ 0.69%) 4.36s 4.44s
Emit Time 2.87s (± 1.22%) 2.90s (± 0.95%) +0.03s (+ 1.08%) 2.84s 2.96s
Total Time 9.11s (± 0.63%) 9.18s (± 0.40%) +0.07s (+ 0.76%) 9.08s 9.26s
material-ui - node (v10.16.3, x64)
Memory used 459,043k (± 0.01%) 462,773k (± 0.01%) +3,730k (+ 0.81%) 462,682k 462,848k
Parse Time 2.04s (± 0.50%) 2.03s (± 0.49%) -0.01s (- 0.29%) 2.01s 2.05s
Bind Time 0.64s (± 1.73%) 0.65s (± 1.39%) +0.01s (+ 1.09%) 0.63s 0.67s
Check Time 12.86s (± 0.53%) 13.30s (± 0.65%) +0.44s (+ 3.46%) 13.18s 13.60s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.54s (± 0.46%) 15.99s (± 0.59%) +0.45s (+ 2.87%) 15.86s 16.31s
Angular - node (v12.1.0, x64)
Memory used 320,648k (± 0.08%) 320,717k (± 0.03%) +69k (+ 0.02%) 320,477k 320,898k
Parse Time 1.99s (± 0.65%) 1.99s (± 0.39%) +0.00s (+ 0.05%) 1.97s 2.01s
Bind Time 0.80s (± 0.65%) 0.80s (± 0.65%) 0.00s ( 0.00%) 0.79s 0.81s
Check Time 4.63s (± 1.05%) 4.62s (± 0.38%) -0.02s (- 0.39%) 4.57s 4.66s
Emit Time 5.34s (± 1.00%) 5.35s (± 0.57%) +0.01s (+ 0.17%) 5.30s 5.45s
Total Time 12.76s (± 0.72%) 12.76s (± 0.34%) -0.01s (- 0.05%) 12.70s 12.89s
Monaco - node (v12.1.0, x64)
Memory used 321,383k (± 0.02%) 321,621k (± 0.02%) +238k (+ 0.07%) 321,486k 321,832k
Parse Time 1.54s (± 0.69%) 1.55s (± 0.54%) +0.01s (+ 0.32%) 1.53s 1.57s
Bind Time 0.69s (± 0.32%) 0.69s (± 0.32%) +0.00s (+ 0.29%) 0.69s 0.70s
Check Time 4.66s (± 0.59%) 4.69s (± 0.49%) +0.03s (+ 0.62%) 4.65s 4.76s
Emit Time 2.80s (± 0.92%) 2.81s (± 0.82%) +0.02s (+ 0.61%) 2.77s 2.87s
Total Time 9.68s (± 0.46%) 9.74s (± 0.40%) +0.06s (+ 0.58%) 9.66s 9.84s
TFS - node (v12.1.0, x64)
Memory used 286,472k (± 0.02%) 286,532k (± 0.02%) +60k (+ 0.02%) 286,400k 286,644k
Parse Time 1.23s (± 0.57%) 1.23s (± 0.47%) +0.00s (+ 0.08%) 1.22s 1.24s
Bind Time 0.64s (± 0.81%) 0.64s (± 1.37%) +0.00s (+ 0.31%) 0.63s 0.67s
Check Time 4.28s (± 0.35%) 4.30s (± 0.54%) +0.02s (+ 0.42%) 4.24s 4.36s
Emit Time 2.90s (± 0.79%) 2.91s (± 0.81%) +0.00s (+ 0.14%) 2.85s 2.97s
Total Time 9.05s (± 0.26%) 9.08s (± 0.54%) +0.03s (+ 0.33%) 8.95s 9.22s
material-ui - node (v12.1.0, x64)
Memory used 437,369k (± 0.06%) 440,991k (± 0.05%) +3,622k (+ 0.83%) 440,092k 441,258k
Parse Time 2.02s (± 0.59%) 2.02s (± 0.34%) +0.00s (+ 0.10%) 2.01s 2.04s
Bind Time 0.63s (± 0.58%) 0.63s (± 0.75%) +0.00s (+ 0.64%) 0.62s 0.64s
Check Time 11.59s (± 1.11%) 11.91s (± 0.47%) +0.32s (+ 2.74%) 11.82s 12.07s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 14.24s (± 0.89%) 14.56s (± 0.42%) +0.32s (+ 2.28%) 14.46s 14.74s
Angular - node (v8.9.0, x64)
Memory used 340,031k (± 0.02%) 340,057k (± 0.02%) +26k (+ 0.01%) 339,913k 340,180k
Parse Time 2.52s (± 0.24%) 2.52s (± 0.51%) -0.00s (- 0.08%) 2.50s 2.56s
Bind Time 0.84s (± 0.73%) 0.84s (± 0.90%) +0.00s (+ 0.36%) 0.83s 0.86s
Check Time 5.34s (± 0.27%) 5.38s (± 0.67%) +0.04s (+ 0.66%) 5.31s 5.48s
Emit Time 5.89s (± 0.79%) 5.97s (± 0.97%) +0.07s (+ 1.24%) 5.79s 6.06s
Total Time 14.60s (± 0.36%) 14.71s (± 0.49%) +0.11s (+ 0.73%) 14.57s 14.89s
Monaco - node (v8.9.0, x64)
Memory used 340,245k (± 0.02%) 340,472k (± 0.02%) +227k (+ 0.07%) 340,379k 340,651k
Parse Time 1.87s (± 0.43%) 1.87s (± 0.39%) -0.00s (- 0.21%) 1.86s 1.89s
Bind Time 0.88s (± 0.53%) 0.88s (± 0.34%) -0.00s (- 0.23%) 0.87s 0.88s
Check Time 5.36s (± 0.53%) 5.38s (± 0.37%) +0.02s (+ 0.30%) 5.33s 5.43s
Emit Time 3.23s (± 0.79%) 3.22s (± 0.27%) -0.02s (- 0.46%) 3.20s 3.24s
Total Time 11.34s (± 0.36%) 11.34s (± 0.23%) -0.00s (- 0.04%) 11.27s 11.41s
TFS - node (v8.9.0, x64)
Memory used 303,673k (± 0.01%) 303,839k (± 0.02%) +166k (+ 0.05%) 303,739k 303,953k
Parse Time 1.53s (± 0.54%) 1.54s (± 0.55%) +0.01s (+ 0.39%) 1.53s 1.56s
Bind Time 0.67s (± 0.90%) 0.67s (± 0.55%) +0.00s (+ 0.15%) 0.66s 0.67s
Check Time 5.06s (± 1.43%) 5.03s (± 1.64%) -0.02s (- 0.45%) 4.87s 5.17s
Emit Time 2.98s (± 3.05%) 2.99s (± 3.03%) +0.01s (+ 0.27%) 2.84s 3.19s
Total Time 10.24s (± 0.40%) 10.23s (± 0.43%) -0.00s (- 0.04%) 10.15s 10.36s
material-ui - node (v8.9.0, x64)
Memory used 463,275k (± 0.01%) 467,062k (± 0.01%) +3,787k (+ 0.82%) 466,895k 467,220k
Parse Time 2.40s (± 0.54%) 2.39s (± 0.62%) -0.01s (- 0.29%) 2.37s 2.44s
Bind Time 0.78s (± 1.50%) 0.77s (± 1.67%) -0.00s (- 0.65%) 0.74s 0.81s
Check Time 17.12s (± 0.75%) 17.61s (± 0.97%) +0.48s (+ 2.83%) 17.13s 17.88s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 20.29s (± 0.68%) 20.76s (± 0.83%) +0.47s (+ 2.33%) 20.28s 21.02s
Angular - node (v8.9.0, x86)
Memory used 195,090k (± 0.02%) 195,160k (± 0.02%) +70k (+ 0.04%) 195,084k 195,236k
Parse Time 2.47s (± 0.89%) 2.44s (± 0.54%) -0.03s (- 1.17%) 2.42s 2.49s
Bind Time 0.98s (± 0.68%) 0.98s (± 0.72%) +0.00s (+ 0.20%) 0.96s 0.99s
Check Time 4.83s (± 0.82%) 4.83s (± 0.59%) +0.00s (+ 0.08%) 4.76s 4.90s
Emit Time 5.90s (± 1.01%) 5.84s (± 0.88%) -0.06s (- 1.07%) 5.71s 5.94s
Total Time 14.18s (± 0.49%) 14.09s (± 0.46%) -0.09s (- 0.60%) 13.95s 14.23s
Monaco - node (v8.9.0, x86)
Memory used 193,364k (± 0.02%) 193,485k (± 0.02%) +121k (+ 0.06%) 193,370k 193,583k
Parse Time 1.90s (± 0.32%) 1.92s (± 0.98%) +0.02s (+ 1.16%) 1.88s 1.95s
Bind Time 0.70s (± 1.00%) 0.70s (± 0.67%) +0.00s (+ 0.14%) 0.69s 0.71s
Check Time 5.50s (± 0.45%) 5.47s (± 1.31%) -0.03s (- 0.51%) 5.20s 5.54s
Emit Time 2.67s (± 0.55%) 2.70s (± 2.64%) +0.03s (+ 1.20%) 2.63s 2.98s
Total Time 10.77s (± 0.36%) 10.79s (± 0.43%) +0.02s (+ 0.20%) 10.69s 10.88s
TFS - node (v8.9.0, x86)
Memory used 173,655k (± 0.02%) 173,755k (± 0.02%) +100k (+ 0.06%) 173,685k 173,817k
Parse Time 1.59s (± 1.09%) 1.60s (± 1.26%) +0.01s (+ 0.57%) 1.56s 1.65s
Bind Time 0.64s (± 1.10%) 0.64s (± 1.04%) +0.00s (+ 0.16%) 0.63s 0.66s
Check Time 4.63s (± 0.63%) 4.68s (± 0.51%) +0.04s (+ 0.93%) 4.59s 4.71s
Emit Time 2.76s (± 1.42%) 2.81s (± 1.82%) +0.05s (+ 1.92%) 2.71s 2.93s
Total Time 9.62s (± 0.69%) 9.72s (± 0.60%) +0.11s (+ 1.09%) 9.58s 9.88s
material-ui - node (v8.9.0, x86)
Memory used 262,331k (± 0.01%) 264,340k (± 0.01%) +2,008k (+ 0.77%) 264,270k 264,397k
Parse Time 2.43s (± 0.63%) 2.44s (± 0.52%) +0.01s (+ 0.41%) 2.41s 2.47s
Bind Time 0.66s (± 1.13%) 0.67s (± 1.43%) +0.01s (+ 0.91%) 0.65s 0.69s
Check Time 15.72s (± 0.76%) 16.12s (± 0.63%) +0.41s (+ 2.58%) 15.89s 16.37s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 18.81s (± 0.65%) 19.23s (± 0.55%) +0.42s (+ 2.22%) 19.00s 19.51s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-166-generic
Architecturex64
Available Memory16 GB
Available Memory1 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v10.16.3, x64)
  • node (v12.1.0, x64)
  • node (v8.9.0, x64)
  • node (v8.9.0, x86)
Scenarios
  • Angular - node (v10.16.3, x64)
  • Angular - node (v12.1.0, x64)
  • Angular - node (v8.9.0, x64)
  • Angular - node (v8.9.0, x86)
  • Monaco - node (v10.16.3, x64)
  • Monaco - node (v12.1.0, x64)
  • Monaco - node (v8.9.0, x64)
  • Monaco - node (v8.9.0, x86)
  • TFS - node (v10.16.3, x64)
  • TFS - node (v12.1.0, x64)
  • TFS - node (v8.9.0, x64)
  • TFS - node (v8.9.0, x86)
  • material-ui - node (v10.16.3, x64)
  • material-ui - node (v12.1.0, x64)
  • material-ui - node (v8.9.0, x64)
  • material-ui - node (v8.9.0, x86)
Benchmark Name Iterations
Current 39577 10
Baseline master 10

@RyanCavanaugh
Copy link
Member

This doesn't feel like a "Pay 1% perf penalty to fix it" bug given that this is our first report in 9 versions of shipping it. Are there other positive impacts in favor of it?

@DanielRosenwasser
Copy link
Member

DanielRosenwasser commented Jul 13, 2020

It's possible we might save time in our determination of whether to defer conditional types by first checking for assignable-to and, only when that's true, then checking for definitely-assignable-to. But of course were then doing even more work in the true case.

I don't necessarily mean requesting that work - I mean just checking whether that work has already been done before in other caches before starting any work. Check whether something is True in identityRelation or subtypeRelation and you know it should be True in assignableRelation. Check whether something is False in comparableRelation and you know it must be False in assignableRelation. You don't even have to duplicate it in those cases.

@ahejlsberg
Copy link
Member Author

No positive effect from performance experiment, so reverting that.

# Conflicts:
#	src/compiler/checker.ts
@ahejlsberg
Copy link
Member Author

ahejlsberg commented Jul 14, 2020

@DanielRosenwasser I did a few experiments with your idea, specifically, if we have cached a true for definitely-assignable-to then assignable-to is also true, and if we have cached a false for assignable-to then definitely-assignable-to is also false. Unfortunately, it doesn't seem to have any effect.

@RyanCavanaugh Yes, a 2.5% performance definitely doesn't seem worth it for this rather obscure corner case. But, material-ui is an outlier and generally I wouldn't expect any measurable difference. In terms of other positive impacts of the change, it's simpler because we can get rid of the restrictive instantiation and its associated cache. But probably not a big deal.

@typescript-bot typescript-bot added the For Uncommitted Bug PR for untriaged, rejected, closed or missing bug label Jul 16, 2020
# Conflicts:
#	src/compiler/checker.ts
@sandersn
Copy link
Member

@ahejlsberg is it worth it to keep this open; would you want to merge it for 4.2 after the 4.1 RC is out?

@ahejlsberg
Copy link
Member Author

@DanielRosenwasser Let's discuss in a design meeting before we make a final call.

@DanielRosenwasser
Copy link
Member

My vote is early 4.2 (i.e. merge on Monday) if we decide to take it.

@ahejlsberg
Copy link
Member Author

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Nov 22, 2020

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

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

Here they are:

Comparison Report - master..39577

Metric master 39577 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 344,458k (± 0.02%) 344,476k (± 0.02%) +18k (+ 0.01%) 344,386k 344,670k
Parse Time 2.00s (± 0.69%) 1.98s (± 0.42%) -0.02s (- 1.15%) 1.96s 2.00s
Bind Time 0.83s (± 0.70%) 0.83s (± 0.82%) +0.00s (+ 0.12%) 0.82s 0.85s
Check Time 4.98s (± 0.31%) 4.98s (± 0.47%) +0.00s (+ 0.06%) 4.94s 5.04s
Emit Time 5.35s (± 0.63%) 5.33s (± 0.55%) -0.02s (- 0.32%) 5.29s 5.43s
Total Time 13.16s (± 0.30%) 13.12s (± 0.23%) -0.04s (- 0.27%) 13.05s 13.21s
Monaco - node (v10.16.3, x64)
Memory used 354,771k (± 0.02%) 354,779k (± 0.03%) +8k (+ 0.00%) 354,557k 355,048k
Parse Time 1.62s (± 0.50%) 1.61s (± 0.54%) -0.01s (- 0.49%) 1.60s 1.64s
Bind Time 0.73s (± 0.41%) 0.73s (± 0.41%) 0.00s ( 0.00%) 0.73s 0.74s
Check Time 5.16s (± 0.35%) 5.14s (± 0.57%) -0.02s (- 0.43%) 5.08s 5.20s
Emit Time 2.81s (± 0.75%) 2.82s (± 0.85%) +0.00s (+ 0.07%) 2.79s 2.88s
Total Time 10.33s (± 0.30%) 10.30s (± 0.38%) -0.03s (- 0.25%) 10.21s 10.36s
TFS - node (v10.16.3, x64)
Memory used 307,834k (± 0.02%) 307,829k (± 0.02%) -6k (- 0.00%) 307,725k 307,929k
Parse Time 1.25s (± 0.55%) 1.25s (± 0.55%) -0.00s (- 0.08%) 1.23s 1.26s
Bind Time 0.68s (± 1.00%) 0.68s (± 1.42%) -0.01s (- 0.88%) 0.65s 0.69s
Check Time 4.60s (± 0.58%) 4.59s (± 0.62%) -0.01s (- 0.28%) 4.53s 4.66s
Emit Time 2.94s (± 1.32%) 2.95s (± 0.48%) +0.01s (+ 0.34%) 2.92s 2.99s
Total Time 9.47s (± 0.63%) 9.46s (± 0.49%) -0.01s (- 0.07%) 9.36s 9.58s
material-ui - node (v10.16.3, x64)
Memory used 489,338k (± 0.01%) 490,885k (± 0.02%) +1,546k (+ 0.32%) 490,735k 491,115k
Parse Time 2.08s (± 0.88%) 2.07s (± 0.41%) -0.00s (- 0.24%) 2.04s 2.08s
Bind Time 0.66s (± 0.93%) 0.66s (± 1.23%) -0.00s (- 0.15%) 0.64s 0.68s
Check Time 13.76s (± 1.05%) 14.03s (± 0.64%) +0.27s (+ 1.99%) 13.76s 14.17s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 16.50s (± 0.97%) 16.76s (± 0.57%) +0.27s (+ 1.61%) 16.50s 16.92s
Angular - node (v12.1.0, x64)
Memory used 322,328k (± 0.02%) 322,373k (± 0.02%) +45k (+ 0.01%) 322,261k 322,500k
Parse Time 1.99s (± 0.61%) 1.97s (± 0.47%) -0.02s (- 1.06%) 1.95s 1.98s
Bind Time 0.82s (± 0.83%) 0.81s (± 0.61%) -0.00s (- 0.25%) 0.80s 0.82s
Check Time 4.93s (± 0.91%) 4.90s (± 0.48%) -0.03s (- 0.55%) 4.83s 4.94s
Emit Time 5.51s (± 0.71%) 5.54s (± 0.97%) +0.03s (+ 0.56%) 5.42s 5.65s
Total Time 13.23s (± 0.49%) 13.22s (± 0.48%) -0.02s (- 0.11%) 13.09s 13.36s
Monaco - node (v12.1.0, x64)
Memory used 336,834k (± 0.02%) 336,819k (± 0.02%) -15k (- 0.00%) 336,727k 336,924k
Parse Time 1.60s (± 1.09%) 1.59s (± 0.92%) -0.01s (- 0.56%) 1.56s 1.62s
Bind Time 0.71s (± 0.67%) 0.72s (± 1.16%) +0.00s (+ 0.28%) 0.70s 0.74s
Check Time 4.94s (± 0.72%) 4.93s (± 0.42%) -0.01s (- 0.24%) 4.88s 4.99s
Emit Time 2.90s (± 1.29%) 2.88s (± 1.32%) -0.02s (- 0.59%) 2.82s 3.02s
Total Time 10.15s (± 0.57%) 10.11s (± 0.42%) -0.04s (- 0.41%) 10.03s 10.23s
TFS - node (v12.1.0, x64)
Memory used 292,055k (± 0.02%) 292,115k (± 0.04%) +60k (+ 0.02%) 291,974k 292,524k
Parse Time 1.27s (± 0.65%) 1.26s (± 0.65%) -0.02s (- 1.18%) 1.25s 1.28s
Bind Time 0.66s (± 0.57%) 0.66s (± 0.71%) +0.01s (+ 0.76%) 0.65s 0.67s
Check Time 4.51s (± 0.50%) 4.53s (± 0.54%) +0.03s (+ 0.64%) 4.47s 4.57s
Emit Time 2.97s (± 0.54%) 2.99s (± 0.66%) +0.02s (+ 0.61%) 2.95s 3.03s
Total Time 9.40s (± 0.23%) 9.44s (± 0.29%) +0.04s (+ 0.43%) 9.38s 9.51s
material-ui - node (v12.1.0, x64)
Memory used 467,319k (± 0.05%) 468,467k (± 0.08%) +1,148k (+ 0.25%) 467,422k 468,924k
Parse Time 2.10s (± 0.29%) 2.08s (± 0.53%) -0.02s (- 0.76%) 2.07s 2.12s
Bind Time 0.65s (± 0.95%) 0.65s (± 1.00%) -0.00s (- 0.46%) 0.63s 0.66s
Check Time 12.16s (± 0.84%) 12.45s (± 1.07%) +0.29s (+ 2.38%) 12.21s 12.79s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 14.92s (± 0.68%) 15.19s (± 0.95%) +0.27s (+ 1.81%) 14.91s 15.53s
Angular - node (v8.9.0, x64)
Memory used 347,032k (± 0.03%) 347,022k (± 0.02%) -10k (- 0.00%) 346,911k 347,212k
Parse Time 2.52s (± 0.53%) 2.53s (± 0.74%) +0.00s (+ 0.12%) 2.48s 2.56s
Bind Time 0.88s (± 0.42%) 0.88s (± 1.09%) +0.00s (+ 0.11%) 0.86s 0.90s
Check Time 5.63s (± 0.66%) 5.62s (± 0.53%) -0.02s (- 0.32%) 5.53s 5.68s
Emit Time 6.40s (± 0.89%) 6.33s (± 1.06%) -0.07s (- 1.09%) 6.13s 6.44s
Total Time 15.43s (± 0.48%) 15.34s (± 0.45%) -0.09s (- 0.56%) 15.11s 15.44s
Monaco - node (v8.9.0, x64)
Memory used 358,520k (± 0.01%) 358,577k (± 0.01%) +57k (+ 0.02%) 358,510k 358,695k
Parse Time 1.94s (± 0.35%) 1.93s (± 0.38%) -0.00s (- 0.26%) 1.92s 1.95s
Bind Time 0.92s (± 0.74%) 0.91s (± 1.10%) -0.00s (- 0.22%) 0.89s 0.94s
Check Time 5.71s (± 0.50%) 5.65s (± 0.46%) -0.06s (- 0.98%) 5.63s 5.74s
Emit Time 3.43s (± 0.47%) 3.41s (± 0.81%) -0.02s (- 0.53%) 3.33s 3.44s
Total Time 11.99s (± 0.28%) 11.91s (± 0.35%) -0.08s (- 0.70%) 11.83s 12.02s
TFS - node (v8.9.0, x64)
Memory used 310,411k (± 0.01%) 310,381k (± 0.02%) -30k (- 0.01%) 310,294k 310,540k
Parse Time 1.59s (± 0.94%) 1.57s (± 0.60%) -0.01s (- 0.82%) 1.56s 1.60s
Bind Time 0.69s (± 0.52%) 0.69s (± 0.64%) -0.00s (- 0.29%) 0.68s 0.70s
Check Time 5.36s (± 0.66%) 5.36s (± 0.46%) -0.01s (- 0.13%) 5.30s 5.39s
Emit Time 3.00s (± 1.53%) 2.96s (± 0.76%) -0.03s (- 1.10%) 2.90s 3.02s
Total Time 10.64s (± 0.64%) 10.59s (± 0.39%) -0.06s (- 0.52%) 10.46s 10.68s
material-ui - node (v8.9.0, x64)
Memory used 496,366k (± 0.01%) 497,892k (± 0.01%) +1,526k (+ 0.31%) 497,777k 497,961k
Parse Time 2.51s (± 0.68%) 2.49s (± 0.33%) -0.02s (- 0.68%) 2.48s 2.51s
Bind Time 0.82s (± 1.69%) 0.81s (± 1.45%) -0.01s (- 0.98%) 0.79s 0.85s
Check Time 18.09s (± 1.19%) 18.63s (± 0.72%) +0.54s (+ 3.00%) 18.32s 18.96s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 21.42s (± 1.04%) 21.94s (± 0.63%) +0.52s (+ 2.41%) 21.65s 22.28s
Angular - node (v8.9.0, x86)
Memory used 198,979k (± 0.03%) 199,002k (± 0.02%) +24k (+ 0.01%) 198,909k 199,105k
Parse Time 2.45s (± 1.03%) 2.45s (± 1.19%) -0.01s (- 0.29%) 2.40s 2.53s
Bind Time 1.03s (± 1.12%) 1.01s (± 1.38%) -0.01s (- 1.46%) 0.97s 1.04s
Check Time 5.07s (± 0.46%) 5.05s (± 0.50%) -0.02s (- 0.36%) 5.00s 5.12s
Emit Time 6.13s (± 0.70%) 6.12s (± 0.57%) -0.02s (- 0.29%) 6.03s 6.17s
Total Time 14.68s (± 0.35%) 14.62s (± 0.32%) -0.06s (- 0.40%) 14.55s 14.78s
Monaco - node (v8.9.0, x86)
Memory used 203,103k (± 0.02%) 203,077k (± 0.02%) -26k (- 0.01%) 202,958k 203,184k
Parse Time 2.01s (± 1.83%) 1.97s (± 0.55%) -0.04s (- 1.94%) 1.94s 2.00s
Bind Time 0.72s (± 0.56%) 0.72s (± 0.46%) +0.00s (+ 0.14%) 0.71s 0.73s
Check Time 5.78s (± 0.37%) 5.77s (± 1.28%) -0.01s (- 0.17%) 5.51s 5.87s
Emit Time 2.76s (± 0.89%) 2.79s (± 2.54%) +0.03s (+ 1.16%) 2.72s 3.05s
Total Time 11.26s (± 0.49%) 11.25s (± 0.44%) -0.02s (- 0.13%) 11.12s 11.36s
TFS - node (v8.9.0, x86)
Memory used 177,516k (± 0.03%) 177,535k (± 0.02%) +19k (+ 0.01%) 177,440k 177,643k
Parse Time 1.62s (± 0.51%) 1.61s (± 0.77%) -0.00s (- 0.25%) 1.59s 1.64s
Bind Time 0.65s (± 1.12%) 0.65s (± 0.62%) -0.00s (- 0.46%) 0.64s 0.66s
Check Time 4.88s (± 0.36%) 4.88s (± 0.74%) +0.01s (+ 0.14%) 4.80s 4.95s
Emit Time 2.84s (± 0.81%) 2.84s (± 1.31%) -0.00s (- 0.04%) 2.75s 2.93s
Total Time 9.98s (± 0.18%) 9.98s (± 0.57%) -0.00s (- 0.01%) 9.85s 10.09s
material-ui - node (v8.9.0, x86)
Memory used 279,449k (± 0.02%) 280,259k (± 0.01%) +810k (+ 0.29%) 280,173k 280,314k
Parse Time 2.57s (± 0.61%) 2.56s (± 0.49%) -0.01s (- 0.43%) 2.53s 2.59s
Bind Time 0.79s (± 6.45%) 0.78s (± 7.64%) -0.00s (- 0.25%) 0.68s 0.87s
Check Time 16.52s (± 0.72%) 17.02s (± 0.81%) +0.51s (+ 3.06%) 16.84s 17.49s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 19.88s (± 0.48%) 20.37s (± 0.63%) +0.49s (+ 2.48%) 20.10s 20.73s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-166-generic
Architecturex64
Available Memory16 GB
Available Memory1 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v10.16.3, x64)
  • node (v12.1.0, x64)
  • node (v8.9.0, x64)
  • node (v8.9.0, x86)
Scenarios
  • Angular - node (v10.16.3, x64)
  • Angular - node (v12.1.0, x64)
  • Angular - node (v8.9.0, x64)
  • Angular - node (v8.9.0, x86)
  • Monaco - node (v10.16.3, x64)
  • Monaco - node (v12.1.0, x64)
  • Monaco - node (v8.9.0, x64)
  • Monaco - node (v8.9.0, x86)
  • TFS - node (v10.16.3, x64)
  • TFS - node (v12.1.0, x64)
  • TFS - node (v8.9.0, x64)
  • TFS - node (v8.9.0, x86)
  • material-ui - node (v10.16.3, x64)
  • material-ui - node (v12.1.0, x64)
  • material-ui - node (v8.9.0, x64)
  • material-ui - node (v8.9.0, x86)
Benchmark Name Iterations
Current 39577 10
Baseline master 10

@sandersn
Copy link
Member

The 10/30/2020 notes still don't show whether we decided to take this PR. @DanielRosenwasser or @ahejlsberg do either of you remember? Do we need to discuss this again?

@sandersn
Copy link
Member

I'm going to close this PR for now to reduce clutter. We can re-open it if there's demand for it.

@sandersn sandersn closed this May 28, 2021
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
Archived in project
Development

Successfully merging this pull request may close these issues.

Wrong branch on conditional type with ReturnType of T condition
6 participants