Skip to content

Allow discrimination to identical object types when discriminating contextual types #40574

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

Merged
merged 3 commits into from
Sep 23, 2020

Conversation

weswigham
Copy link
Member

Fixes #37231

@typescript-bot typescript-bot added the For Milestone Bug PRs that fix a bug with a specific milestone label Sep 15, 2020
@weswigham
Copy link
Member Author

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Sep 15, 2020

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

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

Here they are:

Comparison Report - master..40574

Metric master 40574 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 349,616k (± 0.03%) 349,767k (± 0.02%) +151k (+ 0.04%) 349,623k 349,923k
Parse Time 2.01s (± 0.39%) 2.01s (± 0.44%) -0.00s (- 0.10%) 1.99s 2.03s
Bind Time 0.82s (± 0.63%) 0.82s (± 0.60%) +0.00s (+ 0.37%) 0.82s 0.84s
Check Time 4.87s (± 0.58%) 4.90s (± 0.55%) +0.03s (+ 0.55%) 4.83s 4.95s
Emit Time 5.16s (± 0.47%) 5.18s (± 0.72%) +0.02s (+ 0.31%) 5.10s 5.25s
Total Time 12.87s (± 0.34%) 12.91s (± 0.36%) +0.04s (+ 0.31%) 12.77s 12.99s
Monaco - node (v10.16.3, x64)
Memory used 354,274k (± 0.03%) 354,261k (± 0.02%) -13k (- 0.00%) 354,096k 354,379k
Parse Time 1.56s (± 0.48%) 1.57s (± 0.59%) +0.00s (+ 0.32%) 1.55s 1.59s
Bind Time 0.71s (± 0.52%) 0.71s (± 0.66%) +0.00s (+ 0.57%) 0.70s 0.72s
Check Time 5.05s (± 0.50%) 5.04s (± 0.40%) -0.01s (- 0.18%) 5.00s 5.09s
Emit Time 2.73s (± 0.56%) 2.74s (± 0.86%) +0.01s (+ 0.33%) 2.70s 2.82s
Total Time 10.05s (± 0.30%) 10.06s (± 0.32%) +0.01s (+ 0.10%) 9.99s 10.12s
TFS - node (v10.16.3, x64)
Memory used 307,557k (± 0.02%) 307,530k (± 0.02%) -28k (- 0.01%) 307,408k 307,608k
Parse Time 1.22s (± 0.45%) 1.22s (± 0.57%) -0.00s (- 0.08%) 1.21s 1.24s
Bind Time 0.67s (± 0.50%) 0.67s (± 0.78%) -0.00s (- 0.15%) 0.65s 0.68s
Check Time 4.53s (± 0.49%) 4.51s (± 0.60%) -0.02s (- 0.51%) 4.46s 4.59s
Emit Time 2.91s (± 0.80%) 2.87s (± 1.16%) -0.04s (- 1.34%) 2.77s 2.93s
Total Time 9.33s (± 0.43%) 9.27s (± 0.33%) -0.06s (- 0.70%) 9.20s 9.36s
material-ui - node (v10.16.3, x64)
Memory used 488,909k (± 0.01%) 506,294k (± 0.01%) +17,385k (+ 3.56%) 506,166k 506,419k
Parse Time 1.99s (± 0.43%) 1.99s (± 0.67%) -0.00s (- 0.10%) 1.96s 2.02s
Bind Time 0.65s (± 1.00%) 0.65s (± 0.69%) 0.00s ( 0.00%) 0.64s 0.66s
Check Time 13.42s (± 0.42%) 47.16s (± 0.84%) 🔻+33.75s (+251.55%) 46.40s 48.05s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 16.06s (± 0.34%) 49.80s (± 0.79%) 🔻+33.74s (+210.10%) 49.02s 50.69s
Angular - node (v12.1.0, x64)
Memory used 326,812k (± 0.02%) 326,871k (± 0.09%) +59k (+ 0.02%) 325,678k 327,145k
Parse Time 2.00s (± 0.65%) 1.99s (± 0.66%) -0.00s (- 0.20%) 1.96s 2.02s
Bind Time 0.81s (± 0.71%) 0.81s (± 0.62%) -0.01s (- 0.62%) 0.80s 0.82s
Check Time 4.77s (± 0.35%) 4.79s (± 0.43%) +0.02s (+ 0.42%) 4.74s 4.83s
Emit Time 5.38s (± 1.02%) 5.36s (± 0.82%) -0.02s (- 0.32%) 5.30s 5.52s
Total Time 12.95s (± 0.49%) 12.94s (± 0.42%) -0.01s (- 0.08%) 12.84s 13.10s
Monaco - node (v12.1.0, x64)
Memory used 336,459k (± 0.02%) 336,460k (± 0.02%) +1k (+ 0.00%) 336,292k 336,636k
Parse Time 1.53s (± 0.55%) 1.53s (± 0.45%) +0.01s (+ 0.39%) 1.52s 1.55s
Bind Time 0.69s (± 0.68%) 0.69s (± 0.89%) +0.00s (+ 0.14%) 0.68s 0.71s
Check Time 4.85s (± 0.53%) 4.85s (± 0.40%) -0.00s (- 0.02%) 4.79s 4.90s
Emit Time 2.80s (± 0.39%) 2.80s (± 0.44%) -0.00s (- 0.07%) 2.78s 2.84s
Total Time 9.87s (± 0.33%) 9.87s (± 0.20%) +0.00s (+ 0.04%) 9.81s 9.91s
TFS - node (v12.1.0, x64)
Memory used 291,810k (± 0.02%) 291,811k (± 0.02%) +1k (+ 0.00%) 291,697k 291,931k
Parse Time 1.23s (± 0.84%) 1.23s (± 0.50%) -0.00s (- 0.08%) 1.22s 1.24s
Bind Time 0.65s (± 1.05%) 0.65s (± 1.57%) -0.00s (- 0.15%) 0.63s 0.67s
Check Time 4.42s (± 0.38%) 4.42s (± 0.34%) -0.00s (- 0.02%) 4.39s 4.46s
Emit Time 2.94s (± 1.06%) 2.94s (± 0.78%) +0.01s (+ 0.20%) 2.90s 3.00s
Total Time 9.23s (± 0.47%) 9.24s (± 0.35%) +0.00s (+ 0.01%) 9.18s 9.33s
material-ui - node (v12.1.0, x64)
Memory used 466,903k (± 0.06%) 482,465k (± 0.08%) +15,562k (+ 3.33%) 481,486k 482,816k
Parse Time 2.01s (± 0.63%) 2.01s (± 0.31%) +0.00s (+ 0.10%) 2.00s 2.02s
Bind Time 0.64s (± 1.05%) 0.64s (± 0.77%) -0.00s (- 0.16%) 0.63s 0.65s
Check Time 11.97s (± 1.02%) 41.71s (± 0.56%) 🔻+29.73s (+248.37%) 41.18s 42.26s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 14.62s (± 0.87%) 44.35s (± 0.52%) 🔻+29.74s (+203.44%) 43.83s 44.91s
Angular - node (v8.9.0, x64)
Memory used 346,313k (± 0.02%) 346,338k (± 0.01%) +25k (+ 0.01%) 346,222k 346,462k
Parse Time 2.55s (± 0.37%) 2.56s (± 0.49%) +0.01s (+ 0.20%) 2.53s 2.58s
Bind Time 0.86s (± 0.34%) 0.86s (± 0.77%) +0.00s (+ 0.12%) 0.85s 0.88s
Check Time 5.50s (± 0.52%) 5.49s (± 0.66%) -0.01s (- 0.27%) 5.42s 5.60s
Emit Time 6.15s (± 1.33%) 6.21s (± 0.91%) +0.06s (+ 0.91%) 6.11s 6.37s
Total Time 15.07s (± 0.53%) 15.11s (± 0.50%) +0.04s (+ 0.27%) 14.99s 15.35s
Monaco - node (v8.9.0, x64)
Memory used 355,563k (± 0.01%) 355,531k (± 0.02%) -32k (- 0.01%) 355,350k 355,627k
Parse Time 1.88s (± 0.43%) 1.89s (± 0.32%) +0.00s (+ 0.16%) 1.87s 1.90s
Bind Time 0.89s (± 0.56%) 0.89s (± 0.75%) +0.00s (+ 0.45%) 0.88s 0.90s
Check Time 5.60s (± 0.56%) 5.58s (± 0.46%) -0.02s (- 0.30%) 5.50s 5.63s
Emit Time 3.25s (± 1.17%) 3.28s (± 1.53%) +0.03s (+ 0.98%) 3.18s 3.36s
Total Time 11.62s (± 0.52%) 11.64s (± 0.63%) +0.02s (+ 0.15%) 11.47s 11.79s
TFS - node (v8.9.0, x64)
Memory used 309,234k (± 0.02%) 309,233k (± 0.02%) -2k (- 0.00%) 309,131k 309,368k
Parse Time 1.56s (± 0.52%) 1.55s (± 0.62%) -0.01s (- 0.39%) 1.53s 1.58s
Bind Time 0.68s (± 0.44%) 0.68s (± 0.73%) -0.00s (- 0.29%) 0.67s 0.69s
Check Time 5.29s (± 0.53%) 5.29s (± 0.47%) -0.00s (- 0.04%) 5.24s 5.34s
Emit Time 2.94s (± 1.01%) 2.92s (± 0.92%) -0.02s (- 0.61%) 2.87s 2.98s
Total Time 10.46s (± 0.43%) 10.44s (± 0.37%) -0.02s (- 0.23%) 10.35s 10.54s
material-ui - node (v8.9.0, x64)
Memory used 493,240k (± 0.01%) 510,622k (± 0.01%) +17,382k (+ 3.52%) 510,530k 510,666k
Parse Time 2.41s (± 0.42%) 2.41s (± 0.51%) +0.00s (+ 0.21%) 2.39s 2.45s
Bind Time 0.81s (± 1.14%) 0.81s (± 0.84%) +0.00s (+ 0.25%) 0.80s 0.83s
Check Time 17.97s (± 0.92%) 55.41s (± 2.70%) 🔻+37.44s (+208.37%) 54.19s 61.17s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 21.19s (± 0.78%) 58.64s (± 2.56%) 🔻+37.45s (+176.76%) 57.42s 64.44s
Angular - node (v8.9.0, x86)
Memory used 198,573k (± 0.02%) 198,641k (± 0.02%) +68k (+ 0.03%) 198,563k 198,773k
Parse Time 2.48s (± 1.14%) 2.49s (± 1.10%) +0.00s (+ 0.16%) 2.44s 2.54s
Bind Time 1.01s (± 0.88%) 1.00s (± 1.57%) -0.02s (- 1.78%) 0.96s 1.02s
Check Time 4.96s (± 0.57%) 4.96s (± 0.57%) +0.01s (+ 0.10%) 4.90s 5.02s
Emit Time 5.94s (± 1.17%) 5.93s (± 0.98%) -0.01s (- 0.22%) 5.75s 6.03s
Total Time 14.40s (± 0.75%) 14.37s (± 0.58%) -0.03s (- 0.18%) 14.09s 14.54s
Monaco - node (v8.9.0, x86)
Memory used 201,331k (± 0.02%) 201,357k (± 0.01%) +26k (+ 0.01%) 201,315k 201,411k
Parse Time 1.92s (± 0.96%) 1.92s (± 0.67%) -0.00s (- 0.21%) 1.90s 1.96s
Bind Time 0.71s (± 0.73%) 0.70s (± 0.84%) -0.00s (- 0.71%) 0.69s 0.72s
Check Time 5.46s (± 1.50%) 5.50s (± 1.36%) +0.04s (+ 0.81%) 5.40s 5.66s
Emit Time 3.01s (± 3.65%) 2.94s (± 4.70%) -0.07s (- 2.35%) 2.63s 3.13s
Total Time 11.11s (± 0.42%) 11.07s (± 0.75%) -0.04s (- 0.37%) 10.90s 11.19s
TFS - node (v8.9.0, x86)
Memory used 176,716k (± 0.03%) 176,737k (± 0.03%) +21k (+ 0.01%) 176,648k 176,865k
Parse Time 1.59s (± 1.11%) 1.58s (± 0.65%) -0.02s (- 1.00%) 1.57s 1.61s
Bind Time 0.64s (± 0.81%) 0.64s (± 0.35%) -0.00s (- 0.31%) 0.63s 0.64s
Check Time 4.80s (± 0.66%) 4.79s (± 0.52%) -0.01s (- 0.31%) 4.72s 4.84s
Emit Time 2.79s (± 1.49%) 2.79s (± 0.97%) +0.00s (+ 0.04%) 2.72s 2.87s
Total Time 9.83s (± 0.78%) 9.80s (± 0.51%) -0.03s (- 0.28%) 9.68s 9.90s
material-ui - node (v8.9.0, x86)
Memory used 277,690k (± 0.02%) 287,302k (± 0.02%) +9,612k (+ 3.46%) 287,207k 287,419k
Parse Time 2.47s (± 0.45%) 2.48s (± 0.79%) +0.00s (+ 0.08%) 2.44s 2.51s
Bind Time 0.74s (± 5.40%) 0.72s (± 4.66%) 🟩-0.03s (- 3.63%) 0.68s 0.83s
Check Time 16.29s (± 0.85%) 47.56s (± 0.50%) 🔻+31.27s (+191.95%) 47.18s 48.22s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 19.51s (± 0.55%) 50.75s (± 0.42%) 🔻+31.24s (+160.14%) 50.39s 51.36s
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 40574 10
Baseline master 10

@weswigham
Copy link
Member Author

🔻+33.75s (+251.55%)

what the heck

@ahejlsberg
Copy link
Member

I'm not surprised. material-ui has some very large types that are very similar, and the identical object types check is an O^2 structural check that quickly generates lots of work.

@weswigham
Copy link
Member Author

But in this case we're only invoking it when a literal position has possibly discriminating fields, to reduce the types we're discriminating against... which I'd hoped would limit how often it's invoked quite a bit. And yet still the check time nearly tripled, ack. Well, the root cause of the original issue is there being two structurally identical discriminable types in a union - maybe I can tweak the contextual type discrimination rules a bit to allow structurally identical members, instead?

@ahejlsberg
Copy link
Member

maybe I can tweak the contextual type discrimination rules a bit to allow structurally identical members, instead?

Definitely think you're better off with that strategy.

@weswigham weswigham changed the title Merge identical object types when discriminating contextual types Allow discrimination to identical object types when discriminating contextual types Sep 16, 2020
@weswigham
Copy link
Member Author

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Sep 16, 2020

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

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

Here they are:

Comparison Report - master..40574

Metric master 40574 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 349,565k (± 0.01%) 349,554k (± 0.02%) -10k (- 0.00%) 349,379k 349,736k
Parse Time 2.01s (± 0.69%) 2.00s (± 0.46%) -0.00s (- 0.20%) 1.98s 2.02s
Bind Time 0.82s (± 0.83%) 0.82s (± 0.92%) -0.00s (- 0.00%) 0.81s 0.84s
Check Time 4.89s (± 0.56%) 4.90s (± 0.51%) +0.01s (+ 0.27%) 4.86s 4.97s
Emit Time 5.21s (± 1.57%) 5.22s (± 0.95%) +0.01s (+ 0.25%) 5.14s 5.37s
Total Time 12.92s (± 0.85%) 12.95s (± 0.45%) +0.02s (+ 0.19%) 12.83s 13.05s
Monaco - node (v10.16.3, x64)
Memory used 354,266k (± 0.02%) 354,278k (± 0.02%) +12k (+ 0.00%) 354,024k 354,403k
Parse Time 1.56s (± 0.45%) 1.56s (± 0.50%) -0.00s (- 0.00%) 1.55s 1.58s
Bind Time 0.71s (± 0.73%) 0.71s (± 0.91%) +0.00s (+ 0.42%) 0.70s 0.73s
Check Time 5.03s (± 0.44%) 5.04s (± 0.54%) +0.01s (+ 0.20%) 4.98s 5.10s
Emit Time 2.75s (± 0.53%) 2.74s (± 0.71%) -0.01s (- 0.22%) 2.71s 2.79s
Total Time 10.05s (± 0.29%) 10.06s (± 0.41%) +0.01s (+ 0.08%) 9.97s 10.15s
TFS - node (v10.16.3, x64)
Memory used 307,562k (± 0.02%) 307,549k (± 0.02%) -12k (- 0.00%) 307,440k 307,779k
Parse Time 1.21s (± 0.68%) 1.22s (± 0.57%) +0.01s (+ 0.58%) 1.20s 1.23s
Bind Time 0.67s (± 0.74%) 0.67s (± 0.60%) +0.00s (+ 0.45%) 0.66s 0.68s
Check Time 4.52s (± 0.62%) 4.53s (± 0.56%) +0.00s (+ 0.04%) 4.49s 4.61s
Emit Time 2.91s (± 1.21%) 2.89s (± 0.49%) -0.01s (- 0.48%) 2.85s 2.92s
Total Time 9.31s (± 0.60%) 9.31s (± 0.34%) -0.01s (- 0.06%) 9.24s 9.40s
material-ui - node (v10.16.3, x64)
Memory used 488,829k (± 0.01%) 488,878k (± 0.01%) +49k (+ 0.01%) 488,793k 488,989k
Parse Time 1.98s (± 0.52%) 1.99s (± 0.24%) +0.01s (+ 0.40%) 1.98s 2.00s
Bind Time 0.65s (± 0.86%) 0.65s (± 0.61%) +0.00s (+ 0.46%) 0.64s 0.66s
Check Time 13.35s (± 0.43%) 13.40s (± 0.78%) +0.06s (+ 0.42%) 13.20s 13.62s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.97s (± 0.35%) 16.04s (± 0.66%) +0.06s (+ 0.39%) 15.84s 16.27s
Angular - node (v12.1.0, x64)
Memory used 326,839k (± 0.03%) 326,814k (± 0.02%) -26k (- 0.01%) 326,684k 326,956k
Parse Time 2.00s (± 0.41%) 2.01s (± 0.79%) +0.01s (+ 0.60%) 1.98s 2.04s
Bind Time 0.81s (± 0.76%) 0.81s (± 0.49%) +0.00s (+ 0.25%) 0.80s 0.82s
Check Time 4.77s (± 0.25%) 4.77s (± 0.41%) -0.00s (- 0.06%) 4.73s 4.81s
Emit Time 5.37s (± 0.89%) 5.34s (± 0.46%) -0.03s (- 0.52%) 5.30s 5.41s
Total Time 12.96s (± 0.39%) 12.94s (± 0.27%) -0.02s (- 0.14%) 12.84s 13.01s
Monaco - node (v12.1.0, x64)
Memory used 336,522k (± 0.03%) 336,476k (± 0.02%) -46k (- 0.01%) 336,347k 336,582k
Parse Time 1.53s (± 0.69%) 1.55s (± 0.62%) +0.01s (+ 0.85%) 1.52s 1.57s
Bind Time 0.69s (± 0.83%) 0.70s (± 1.19%) +0.01s (+ 0.87%) 0.68s 0.72s
Check Time 4.85s (± 0.41%) 4.85s (± 0.44%) +0.01s (+ 0.12%) 4.81s 4.89s
Emit Time 2.81s (± 0.87%) 2.83s (± 0.87%) +0.02s (+ 0.82%) 2.79s 2.89s
Total Time 9.88s (± 0.24%) 9.93s (± 0.37%) +0.05s (+ 0.47%) 9.84s 9.98s
TFS - node (v12.1.0, x64)
Memory used 291,797k (± 0.02%) 291,789k (± 0.02%) -8k (- 0.00%) 291,638k 291,856k
Parse Time 1.24s (± 0.55%) 1.23s (± 0.90%) -0.00s (- 0.08%) 1.21s 1.26s
Bind Time 0.64s (± 0.92%) 0.65s (± 0.76%) +0.00s (+ 0.31%) 0.64s 0.66s
Check Time 4.42s (± 0.53%) 4.43s (± 0.38%) +0.01s (+ 0.25%) 4.40s 4.46s
Emit Time 2.90s (± 1.22%) 2.93s (± 0.81%) +0.03s (+ 1.03%) 2.88s 2.99s
Total Time 9.20s (± 0.51%) 9.24s (± 0.24%) +0.04s (+ 0.46%) 9.18s 9.30s
material-ui - node (v12.1.0, x64)
Memory used 466,841k (± 0.07%) 466,952k (± 0.05%) +112k (+ 0.02%) 465,979k 467,292k
Parse Time 2.01s (± 0.31%) 2.01s (± 0.60%) +0.01s (+ 0.25%) 1.99s 2.05s
Bind Time 0.64s (± 0.58%) 0.64s (± 0.75%) +0.00s (+ 0.31%) 0.63s 0.65s
Check Time 11.99s (± 0.85%) 12.08s (± 1.42%) +0.09s (+ 0.75%) 11.88s 12.59s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 14.64s (± 0.74%) 14.73s (± 1.25%) +0.10s (+ 0.66%) 14.51s 15.28s
Angular - node (v8.9.0, x64)
Memory used 346,300k (± 0.02%) 346,219k (± 0.02%) -82k (- 0.02%) 346,066k 346,408k
Parse Time 2.55s (± 0.45%) 2.56s (± 0.45%) +0.00s (+ 0.16%) 2.54s 2.59s
Bind Time 0.86s (± 1.01%) 0.86s (± 0.96%) +0.01s (+ 0.82%) 0.85s 0.89s
Check Time 5.48s (± 0.40%) 5.50s (± 0.51%) +0.02s (+ 0.37%) 5.46s 5.58s
Emit Time 6.18s (± 0.73%) 6.14s (± 0.74%) -0.04s (- 0.66%) 6.04s 6.26s
Total Time 15.07s (± 0.35%) 15.05s (± 0.39%) -0.01s (- 0.08%) 14.91s 15.17s
Monaco - node (v8.9.0, x64)
Memory used 355,543k (± 0.01%) 355,579k (± 0.01%) +36k (+ 0.01%) 355,473k 355,656k
Parse Time 1.88s (± 0.47%) 1.88s (± 0.44%) -0.01s (- 0.48%) 1.86s 1.90s
Bind Time 0.89s (± 0.82%) 0.89s (± 0.93%) +0.01s (+ 0.68%) 0.88s 0.91s
Check Time 5.56s (± 0.30%) 5.57s (± 0.50%) +0.02s (+ 0.31%) 5.50s 5.65s
Emit Time 3.25s (± 1.43%) 3.29s (± 1.28%) +0.03s (+ 0.95%) 3.18s 3.37s
Total Time 11.58s (± 0.52%) 11.63s (± 0.58%) +0.05s (+ 0.40%) 11.50s 11.84s
TFS - node (v8.9.0, x64)
Memory used 309,283k (± 0.01%) 309,247k (± 0.02%) -36k (- 0.01%) 309,145k 309,375k
Parse Time 1.55s (± 0.37%) 1.55s (± 0.31%) +0.00s (+ 0.00%) 1.54s 1.56s
Bind Time 0.68s (± 0.99%) 0.68s (± 0.88%) -0.00s (- 0.15%) 0.66s 0.69s
Check Time 5.26s (± 0.55%) 5.29s (± 0.58%) +0.02s (+ 0.47%) 5.19s 5.34s
Emit Time 2.93s (± 0.83%) 2.92s (± 0.47%) -0.01s (- 0.17%) 2.89s 2.96s
Total Time 10.42s (± 0.39%) 10.44s (± 0.35%) +0.02s (+ 0.20%) 10.34s 10.50s
material-ui - node (v8.9.0, x64)
Memory used 493,282k (± 0.01%) 493,322k (± 0.01%) +40k (+ 0.01%) 493,161k 493,440k
Parse Time 2.42s (± 0.59%) 2.42s (± 0.46%) +0.01s (+ 0.21%) 2.40s 2.44s
Bind Time 0.81s (± 0.74%) 0.81s (± 0.90%) +0.01s (+ 0.74%) 0.80s 0.83s
Check Time 18.02s (± 0.72%) 18.20s (± 0.58%) +0.18s (+ 1.00%) 17.97s 18.43s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 21.24s (± 0.63%) 21.43s (± 0.51%) +0.19s (+ 0.91%) 21.18s 21.66s
Angular - node (v8.9.0, x86)
Memory used 198,566k (± 0.03%) 198,591k (± 0.03%) +25k (+ 0.01%) 198,420k 198,748k
Parse Time 2.47s (± 0.80%) 2.48s (± 0.97%) +0.01s (+ 0.28%) 2.43s 2.55s
Bind Time 1.01s (± 1.32%) 1.01s (± 0.87%) +0.00s (+ 0.30%) 0.99s 1.04s
Check Time 4.97s (± 0.74%) 4.99s (± 0.59%) +0.02s (+ 0.44%) 4.94s 5.09s
Emit Time 5.98s (± 0.83%) 5.97s (± 0.99%) -0.01s (- 0.25%) 5.88s 6.13s
Total Time 14.43s (± 0.52%) 14.45s (± 0.33%) +0.02s (+ 0.11%) 14.32s 14.55s
Monaco - node (v8.9.0, x86)
Memory used 201,360k (± 0.03%) 201,369k (± 0.01%) +8k (+ 0.00%) 201,283k 201,432k
Parse Time 1.92s (± 0.81%) 1.92s (± 1.15%) +0.00s (+ 0.05%) 1.88s 1.97s
Bind Time 0.70s (± 0.70%) 0.70s (± 0.74%) -0.00s (- 0.43%) 0.69s 0.71s
Check Time 5.49s (± 1.68%) 5.56s (± 1.68%) +0.07s (+ 1.31%) 5.39s 5.71s
Emit Time 2.94s (± 4.80%) 2.88s (± 5.29%) -0.06s (- 2.00%) 2.65s 3.18s
Total Time 11.06s (± 0.67%) 11.07s (± 0.80%) +0.01s (+ 0.11%) 10.86s 11.29s
TFS - node (v8.9.0, x86)
Memory used 176,720k (± 0.03%) 176,747k (± 0.03%) +28k (+ 0.02%) 176,667k 176,886k
Parse Time 1.59s (± 0.72%) 1.58s (± 0.74%) -0.01s (- 0.82%) 1.55s 1.60s
Bind Time 0.65s (± 1.05%) 0.64s (± 0.69%) -0.00s (- 0.62%) 0.63s 0.65s
Check Time 4.80s (± 0.62%) 4.79s (± 0.53%) -0.01s (- 0.23%) 4.72s 4.84s
Emit Time 2.79s (± 1.20%) 2.78s (± 0.35%) -0.01s (- 0.47%) 2.76s 2.80s
Total Time 9.83s (± 0.55%) 9.79s (± 0.39%) -0.04s (- 0.45%) 9.69s 9.86s
material-ui - node (v8.9.0, x86)
Memory used 277,713k (± 0.02%) 277,703k (± 0.02%) -10k (- 0.00%) 277,619k 277,820k
Parse Time 2.45s (± 0.44%) 2.46s (± 0.62%) +0.01s (+ 0.53%) 2.42s 2.49s
Bind Time 0.70s (± 4.01%) 0.76s (± 7.11%) +0.05s (+ 7.40%) 0.68s 0.87s
Check Time 16.27s (± 0.52%) 16.40s (± 1.22%) +0.13s (+ 0.78%) 16.09s 16.93s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 19.43s (± 0.59%) 19.62s (± 1.05%) +0.19s (+ 0.98%) 19.30s 20.16s
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 40574 10
Baseline master 10

@weswigham
Copy link
Member Author

Much better - perf diffs mostly within the variance measurements. @ahejlsberg @sandersn wanna give this a review?

@weswigham weswigham merged commit a91c287 into microsoft:master Sep 23, 2020
@weswigham weswigham deleted the contextual-type-unification branch September 23, 2020 07:51
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
Archived in project
Development

Successfully merging this pull request may close these issues.

Type inference with map & (otherMap | otherMap2) fails
5 participants