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

Narrow unions to the narrowest constituent on assignment #47975

Closed
wants to merge 1 commit into from

Conversation

Zzzen
Copy link
Contributor

@Zzzen Zzzen commented Feb 20, 2022

Fixes #47731

@typescript-bot typescript-bot added the For Backlog Bug PRs that fix a backlog bug label Feb 20, 2022
@RyanCavanaugh
Copy link
Member

@typescript-bot user test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Feb 22, 2022

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

@typescript-bot
Copy link
Collaborator

The user suite test run you requested has finished and failed. I've opened a PR with the baseline diff from master.

@RyanCavanaugh
Copy link
Member

@typescript-bot test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Feb 23, 2022

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

@RyanCavanaugh
Copy link
Member

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Feb 23, 2022

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

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

Here they are:

Comparison Report - main..47975

Metric main 47975 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 356,651k (± 0.02%) 356,781k (± 0.01%) +130k (+ 0.04%) 356,693k 356,880k
Parse Time 2.03s (± 0.60%) 2.04s (± 0.59%) +0.01s (+ 0.69%) 2.02s 2.07s
Bind Time 0.86s (± 0.80%) 0.86s (± 0.75%) +0.01s (+ 0.70%) 0.85s 0.87s
Check Time 5.67s (± 0.28%) 5.70s (± 0.55%) +0.02s (+ 0.39%) 5.63s 5.76s
Emit Time 5.90s (± 0.46%) 5.93s (± 0.71%) +0.03s (+ 0.59%) 5.87s 6.06s
Total Time 14.45s (± 0.31%) 14.53s (± 0.46%) +0.08s (+ 0.55%) 14.41s 14.70s
Compiler-Unions - node (v10.16.3, x64)
Memory used 205,560k (± 0.03%) 210,038k (± 0.46%) +4,479k (+ 2.18%) 209,195k 212,685k
Parse Time 0.83s (± 0.54%) 0.83s (± 0.71%) +0.00s (+ 0.24%) 0.82s 0.84s
Bind Time 0.53s (± 1.14%) 0.53s (± 1.13%) +0.00s (+ 0.19%) 0.51s 0.54s
Check Time 7.82s (± 0.62%) 9.43s (± 0.79%) +1.61s (+20.53%) 9.23s 9.55s
Emit Time 2.50s (± 1.14%) 2.50s (± 1.33%) +0.01s (+ 0.24%) 2.41s 2.57s
Total Time 11.68s (± 0.50%) 13.30s (± 0.78%) +1.62s (+13.83%) 13.02s 13.45s
Monaco - node (v10.16.3, x64)
Memory used 343,281k (± 0.03%) 343,255k (± 0.03%) -26k (- 0.01%) 343,049k 343,524k
Parse Time 1.56s (± 0.61%) 1.56s (± 0.74%) +0.00s (+ 0.19%) 1.53s 1.59s
Bind Time 0.76s (± 0.73%) 0.76s (± 0.62%) +0.01s (+ 0.66%) 0.75s 0.77s
Check Time 5.59s (± 0.46%) 5.61s (± 0.52%) +0.02s (+ 0.30%) 5.54s 5.66s
Emit Time 3.23s (± 0.93%) 3.24s (± 0.87%) +0.00s (+ 0.06%) 3.18s 3.30s
Total Time 11.14s (± 0.34%) 11.16s (± 0.36%) +0.02s (+ 0.22%) 11.04s 11.23s
TFS - node (v10.16.3, x64)
Memory used 305,060k (± 0.02%) 305,085k (± 0.02%) +25k (+ 0.01%) 304,877k 305,184k
Parse Time 1.26s (± 0.41%) 1.28s (± 0.78%) +0.02s (+ 1.67%) 1.26s 1.31s
Bind Time 0.71s (± 0.52%) 0.72s (± 1.06%) +0.00s (+ 0.14%) 0.70s 0.73s
Check Time 5.15s (± 0.64%) 5.14s (± 0.48%) -0.01s (- 0.16%) 5.07s 5.20s
Emit Time 3.38s (± 1.01%) 3.37s (± 0.91%) -0.01s (- 0.27%) 3.31s 3.45s
Total Time 10.50s (± 0.44%) 10.50s (± 0.47%) +0.00s (+ 0.01%) 10.37s 10.64s
material-ui - node (v10.16.3, x64)
Memory used 468,782k (± 0.01%) 468,771k (± 0.01%) -11k (- 0.00%) 468,672k 468,879k
Parse Time 1.81s (± 0.45%) 1.81s (± 0.69%) +0.00s (+ 0.17%) 1.79s 1.85s
Bind Time 0.66s (± 1.01%) 0.67s (± 1.12%) +0.01s (+ 1.66%) 0.66s 0.69s
Check Time 14.08s (± 0.35%) 14.16s (± 0.58%) +0.08s (+ 0.54%) 13.99s 14.32s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 16.55s (± 0.31%) 16.64s (± 0.52%) +0.09s (+ 0.55%) 16.47s 16.82s
xstate - node (v10.16.3, x64)
Memory used 574,411k (± 1.38%) 574,337k (± 1.38%) -73k (- 0.01%) 570,586k 606,391k
Parse Time 2.58s (± 0.45%) 2.59s (± 0.49%) +0.01s (+ 0.23%) 2.56s 2.62s
Bind Time 1.02s (± 0.36%) 1.03s (± 0.39%) +0.00s (+ 0.39%) 1.02s 1.04s
Check Time 1.51s (± 0.83%) 1.50s (± 0.58%) -0.01s (- 0.33%) 1.49s 1.52s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 5.18s (± 0.42%) 5.18s (± 0.35%) +0.01s (+ 0.12%) 5.14s 5.22s
Angular - node (v12.1.0, x64)
Memory used 334,578k (± 0.02%) 334,428k (± 0.09%) -150k (- 0.04%) 333,216k 334,699k
Parse Time 2.03s (± 0.85%) 2.03s (± 0.74%) +0.00s (+ 0.15%) 1.99s 2.06s
Bind Time 0.84s (± 1.01%) 0.84s (± 0.77%) -0.00s (- 0.12%) 0.83s 0.85s
Check Time 5.48s (± 0.51%) 5.51s (± 0.74%) +0.03s (+ 0.46%) 5.43s 5.64s
Emit Time 6.12s (± 0.21%) 6.21s (± 0.88%) +0.09s (+ 1.44%) 6.13s 6.34s
Total Time 14.48s (± 0.31%) 14.59s (± 0.68%) +0.11s (+ 0.78%) 14.38s 14.84s
Compiler-Unions - node (v12.1.0, x64)
Memory used 192,969k (± 0.15%) 195,933k (± 0.03%) +2,964k (+ 1.54%) 195,804k 196,089k
Parse Time 0.83s (± 0.78%) 0.84s (± 0.71%) +0.00s (+ 0.48%) 0.82s 0.85s
Bind Time 0.54s (± 0.93%) 0.54s (± 0.83%) +0.00s (+ 0.56%) 0.53s 0.55s
Check Time 7.41s (± 0.58%) 8.84s (± 0.64%) +1.43s (+19.30%) 8.68s 8.97s
Emit Time 2.50s (± 1.02%) 2.49s (± 1.21%) -0.02s (- 0.64%) 2.42s 2.58s
Total Time 11.28s (± 0.48%) 12.70s (± 0.59%) +1.42s (+12.58%) 12.50s 12.82s
Monaco - node (v12.1.0, x64)
Memory used 326,057k (± 0.08%) 326,133k (± 0.06%) +76k (+ 0.02%) 325,440k 326,405k
Parse Time 1.53s (± 0.58%) 1.54s (± 0.60%) +0.01s (+ 0.59%) 1.52s 1.56s
Bind Time 0.74s (± 0.70%) 0.74s (± 1.02%) +0.00s (+ 0.40%) 0.73s 0.76s
Check Time 5.49s (± 0.43%) 5.50s (± 0.37%) +0.01s (+ 0.26%) 5.45s 5.55s
Emit Time 3.25s (± 1.53%) 3.24s (± 0.79%) -0.02s (- 0.55%) 3.19s 3.32s
Total Time 11.01s (± 0.51%) 11.02s (± 0.41%) +0.01s (+ 0.06%) 10.93s 11.16s
TFS - node (v12.1.0, x64)
Memory used 289,724k (± 0.02%) 289,783k (± 0.02%) +59k (+ 0.02%) 289,693k 289,871k
Parse Time 1.28s (± 0.78%) 1.29s (± 0.58%) +0.01s (+ 0.55%) 1.28s 1.31s
Bind Time 0.71s (± 1.26%) 0.70s (± 0.83%) -0.00s (- 0.42%) 0.69s 0.71s
Check Time 5.07s (± 0.37%) 5.08s (± 0.55%) +0.01s (+ 0.18%) 5.04s 5.16s
Emit Time 3.43s (± 0.39%) 3.46s (± 0.97%) +0.03s (+ 0.87%) 3.38s 3.54s
Total Time 10.50s (± 0.37%) 10.54s (± 0.52%) +0.04s (+ 0.37%) 10.44s 10.69s
material-ui - node (v12.1.0, x64)
Memory used 447,831k (± 0.07%) 447,913k (± 0.06%) +82k (+ 0.02%) 446,871k 448,152k
Parse Time 1.80s (± 0.50%) 1.81s (± 0.55%) +0.01s (+ 0.78%) 1.79s 1.84s
Bind Time 0.64s (± 0.78%) 0.64s (± 0.62%) +0.01s (+ 0.94%) 0.63s 0.65s
Check Time 12.84s (± 0.82%) 12.79s (± 1.07%) -0.05s (- 0.38%) 12.63s 13.27s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.27s (± 0.72%) 15.24s (± 0.90%) -0.03s (- 0.21%) 15.09s 15.73s
xstate - node (v12.1.0, x64)
Memory used 536,795k (± 0.01%) 536,915k (± 0.01%) +120k (+ 0.02%) 536,797k 537,109k
Parse Time 2.54s (± 0.51%) 2.54s (± 0.60%) +0.01s (+ 0.24%) 2.52s 2.59s
Bind Time 1.05s (± 0.62%) 1.05s (± 0.49%) -0.00s (- 0.10%) 1.04s 1.06s
Check Time 1.47s (± 0.66%) 1.46s (± 0.48%) -0.01s (- 0.68%) 1.44s 1.47s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 5.12s (± 0.41%) 5.12s (± 0.34%) -0.01s (- 0.14%) 5.09s 5.17s
Angular - node (v14.15.1, x64)
Memory used 332,869k (± 0.01%) 332,860k (± 0.01%) -10k (- 0.00%) 332,798k 332,883k
Parse Time 2.01s (± 0.44%) 2.03s (± 0.58%) +0.02s (+ 0.79%) 2.00s 2.06s
Bind Time 0.90s (± 1.07%) 0.90s (± 0.77%) 0.00s ( 0.00%) 0.88s 0.91s
Check Time 5.51s (± 0.48%) 5.54s (± 0.54%) +0.04s (+ 0.73%) 5.45s 5.60s
Emit Time 6.26s (± 0.71%) 6.25s (± 0.44%) -0.01s (- 0.10%) 6.20s 6.31s
Total Time 14.67s (± 0.39%) 14.72s (± 0.32%) +0.05s (+ 0.36%) 14.65s 14.82s
Compiler-Unions - node (v14.15.1, x64)
Memory used 192,420k (± 0.50%) 196,428k (± 0.64%) +4,009k (+ 2.08%) 194,407k 198,506k
Parse Time 0.85s (± 0.87%) 0.85s (± 0.87%) 0.00s ( 0.00%) 0.84s 0.87s
Bind Time 0.57s (± 0.84%) 0.57s (± 0.64%) -0.00s (- 0.18%) 0.56s 0.57s
Check Time 7.43s (± 0.71%) 8.90s (± 0.97%) +1.47s (+19.73%) 8.68s 9.16s
Emit Time 2.50s (± 1.19%) 2.48s (± 0.86%) -0.01s (- 0.60%) 2.43s 2.54s
Total Time 11.35s (± 0.53%) 12.80s (± 0.71%) +1.45s (+12.78%) 12.52s 13.05s
Monaco - node (v14.15.1, x64)
Memory used 325,003k (± 0.00%) 325,027k (± 0.00%) +25k (+ 0.01%) 325,001k 325,064k
Parse Time 1.57s (± 1.24%) 1.56s (± 0.64%) -0.01s (- 0.51%) 1.55s 1.59s
Bind Time 0.77s (± 0.98%) 0.77s (± 0.84%) -0.00s (- 0.26%) 0.76s 0.79s
Check Time 5.39s (± 0.40%) 5.40s (± 0.48%) +0.01s (+ 0.19%) 5.33s 5.47s
Emit Time 3.27s (± 0.80%) 3.28s (± 0.55%) +0.01s (+ 0.18%) 3.24s 3.34s
Total Time 11.00s (± 0.35%) 11.01s (± 0.31%) +0.01s (+ 0.08%) 10.96s 11.13s
TFS - node (v14.15.1, x64)
Memory used 288,585k (± 0.01%) 288,587k (± 0.01%) +2k (+ 0.00%) 288,542k 288,619k
Parse Time 1.30s (± 0.95%) 1.29s (± 0.74%) -0.01s (- 0.54%) 1.28s 1.32s
Bind Time 0.74s (± 1.30%) 0.75s (± 0.50%) +0.01s (+ 1.36%) 0.74s 0.75s
Check Time 5.06s (± 0.57%) 5.07s (± 0.76%) +0.00s (+ 0.10%) 5.00s 5.17s
Emit Time 3.53s (± 1.68%) 3.55s (± 1.38%) +0.02s (+ 0.59%) 3.38s 3.63s
Total Time 10.64s (± 0.82%) 10.66s (± 0.74%) +0.03s (+ 0.25%) 10.41s 10.82s
material-ui - node (v14.15.1, x64)
Memory used 446,228k (± 0.00%) 446,107k (± 0.05%) -120k (- 0.03%) 445,202k 446,323k
Parse Time 1.86s (± 0.66%) 1.86s (± 0.89%) +0.00s (+ 0.05%) 1.83s 1.90s
Bind Time 0.70s (± 0.49%) 0.69s (± 0.49%) -0.00s (- 0.57%) 0.69s 0.70s
Check Time 12.85s (± 0.70%) 12.99s (± 0.61%) +0.14s (+ 1.10%) 12.84s 13.21s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.41s (± 0.64%) 15.55s (± 0.57%) +0.14s (+ 0.91%) 15.39s 15.79s
xstate - node (v14.15.1, x64)
Memory used 534,541k (± 0.01%) 534,597k (± 0.01%) +56k (+ 0.01%) 534,532k 534,644k
Parse Time 2.58s (± 0.47%) 2.58s (± 0.42%) +0.01s (+ 0.23%) 2.55s 2.60s
Bind Time 1.16s (± 1.23%) 1.17s (± 0.71%) +0.00s (+ 0.34%) 1.15s 1.19s
Check Time 1.50s (± 0.48%) 1.51s (± 0.76%) +0.01s (+ 0.53%) 1.49s 1.54s
Emit Time 0.07s (± 4.13%) 0.07s (± 3.14%) -0.00s (- 1.39%) 0.07s 0.08s
Total Time 5.32s (± 0.36%) 5.34s (± 0.29%) +0.02s (+ 0.34%) 5.31s 5.38s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-210-generic
Architecturex64
Available Memory16 GB
Available Memory5 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v10.16.3, x64)
  • node (v12.1.0, x64)
  • node (v14.15.1, x64)
Scenarios
  • Angular - node (v10.16.3, x64)
  • Angular - node (v12.1.0, x64)
  • Angular - node (v14.15.1, x64)
  • Compiler-Unions - node (v10.16.3, x64)
  • Compiler-Unions - node (v12.1.0, x64)
  • Compiler-Unions - node (v14.15.1, x64)
  • Monaco - node (v10.16.3, x64)
  • Monaco - node (v12.1.0, x64)
  • Monaco - node (v14.15.1, x64)
  • TFS - node (v10.16.3, x64)
  • TFS - node (v12.1.0, x64)
  • TFS - node (v14.15.1, x64)
  • material-ui - node (v10.16.3, x64)
  • material-ui - node (v12.1.0, x64)
  • material-ui - node (v14.15.1, x64)
  • xstate - node (v10.16.3, x64)
  • xstate - node (v12.1.0, x64)
  • xstate - node (v14.15.1, x64)
Benchmark Name Iterations
Current 47975 10
Baseline main 10

Developer Information:

Download Benchmark

@RyanCavanaugh
Copy link
Member

+1.45s (+12.78%) 😭

I don't think we can take this as-is (Compiler Unions project is fairly representative of union-heavy codebases) given the original bug isn't super compelling.

@Zzzen
Copy link
Contributor Author

Zzzen commented Feb 24, 2022

image

ok, nothing to see here

@Zzzen Zzzen closed this Feb 24, 2022
@matthargett
Copy link

Can we re-open this PR and rebase to recheck the performance now? I'm actually running into this problem, the ergonomics are not great.

@Zzzen
Copy link
Contributor Author

Zzzen commented Jun 29, 2022

The performance is unlikely to change. But it could be improved by caching. Do you know how to try the performance test suite at home? @RyanCavanaugh

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
For Backlog Bug PRs that fix a backlog bug
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Narrow subtype-reduction-prone unions to their narrowest constituent
4 participants