Skip to content

Fix contextual typing on yield and return expressions in generator function #49736

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 6 commits into from
Aug 5, 2022

Conversation

gabritto
Copy link
Member

Fixes #45596.

Also complemented the fix for #35995.

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

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jun 29, 2022

Heya @gabritto, I've started to run the perf test suite on this PR at e955108. 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:

Compiler

Comparison Report - main..49736
Metric main 49736 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 359,572k (± 0.01%) 359,624k (± 0.02%) +52k (+ 0.01%) 359,508k 359,779k
Parse Time 2.09s (± 0.55%) 2.09s (± 0.55%) -0.01s (- 0.29%) 2.07s 2.12s
Bind Time 0.90s (± 0.66%) 0.90s (± 0.94%) +0.00s (+ 0.33%) 0.88s 0.92s
Check Time 5.96s (± 0.29%) 5.96s (± 0.72%) -0.00s (- 0.03%) 5.88s 6.05s
Emit Time 6.11s (± 0.40%) 6.12s (± 0.54%) +0.01s (+ 0.11%) 6.03s 6.18s
Total Time 15.06s (± 0.20%) 15.07s (± 0.50%) +0.01s (+ 0.06%) 14.88s 15.21s
Compiler-Unions - node (v10.16.3, x64)
Memory used 206,408k (± 0.04%) 206,423k (± 0.04%) +15k (+ 0.01%) 206,218k 206,603k
Parse Time 0.83s (± 1.09%) 0.83s (± 0.99%) +0.00s (+ 0.60%) 0.81s 0.85s
Bind Time 0.53s (± 1.40%) 0.53s (± 1.40%) -0.00s (- 0.56%) 0.51s 0.54s
Check Time 8.05s (± 0.57%) 8.06s (± 0.66%) +0.01s (+ 0.10%) 7.95s 8.20s
Emit Time 2.50s (± 1.17%) 2.50s (± 0.99%) -0.00s (- 0.20%) 2.45s 2.55s
Total Time 11.92s (± 0.59%) 11.92s (± 0.47%) +0.00s (+ 0.02%) 11.76s 12.03s
Monaco - node (v10.16.3, x64)
Memory used 343,931k (± 0.02%) 343,900k (± 0.02%) -31k (- 0.01%) 343,701k 343,996k
Parse Time 1.59s (± 0.44%) 1.59s (± 0.58%) +0.00s (+ 0.19%) 1.57s 1.61s
Bind Time 0.77s (± 0.77%) 0.77s (± 0.64%) -0.01s (- 1.03%) 0.76s 0.78s
Check Time 5.94s (± 0.53%) 5.93s (± 0.50%) -0.01s (- 0.12%) 5.87s 6.01s
Emit Time 3.24s (± 0.34%) 3.26s (± 0.71%) +0.02s (+ 0.62%) 3.22s 3.32s
Total Time 11.54s (± 0.34%) 11.55s (± 0.49%) +0.01s (+ 0.09%) 11.43s 11.70s
TFS - node (v10.16.3, x64)
Memory used 305,152k (± 0.02%) 305,171k (± 0.02%) +20k (+ 0.01%) 304,995k 305,296k
Parse Time 1.28s (± 0.43%) 1.29s (± 1.16%) +0.01s (+ 0.55%) 1.26s 1.33s
Bind Time 0.72s (± 0.72%) 0.73s (± 1.06%) +0.01s (+ 1.11%) 0.71s 0.75s
Check Time 5.39s (± 0.55%) 5.41s (± 0.64%) +0.02s (+ 0.28%) 5.36s 5.49s
Emit Time 3.44s (± 1.40%) 3.41s (± 0.93%) -0.03s (- 0.99%) 3.36s 3.51s
Total Time 10.84s (± 0.69%) 10.83s (± 0.59%) -0.01s (- 0.06%) 10.72s 11.01s
material-ui - node (v10.16.3, x64)
Memory used 469,068k (± 0.01%) 469,069k (± 0.02%) +2k (+ 0.00%) 468,897k 469,237k
Parse Time 1.83s (± 0.66%) 1.83s (± 0.50%) +0.00s (+ 0.16%) 1.81s 1.85s
Bind Time 0.69s (± 1.34%) 0.69s (± 1.19%) +0.00s (+ 0.29%) 0.67s 0.71s
Check Time 14.39s (± 0.48%) 14.53s (± 0.74%) +0.14s (+ 0.94%) 14.39s 14.82s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 16.91s (± 0.42%) 17.05s (± 0.62%) +0.14s (+ 0.83%) 16.91s 17.35s
xstate - node (v10.16.3, x64)
Memory used 587,649k (± 1.89%) 577,792k (± 0.02%) -9,857k (- 1.68%) 577,608k 577,960k
Parse Time 2.59s (± 0.39%) 2.61s (± 0.47%) +0.01s (+ 0.54%) 2.59s 2.65s
Bind Time 1.03s (± 1.25%) 1.04s (± 0.66%) +0.00s (+ 0.29%) 1.03s 1.06s
Check Time 1.53s (± 0.44%) 1.54s (± 0.57%) +0.01s (+ 0.39%) 1.52s 1.56s
Emit Time 0.07s (± 0.00%) 0.07s (± 3.14%) +0.00s (+ 1.43%) 0.07s 0.08s
Total Time 5.23s (± 0.45%) 5.25s (± 0.25%) +0.02s (+ 0.42%) 5.22s 5.28s
Angular - node (v12.1.0, x64)
Memory used 337,150k (± 0.03%) 337,201k (± 0.01%) +50k (+ 0.01%) 337,093k 337,286k
Parse Time 2.09s (± 0.41%) 2.09s (± 0.64%) +0.00s (+ 0.05%) 2.06s 2.12s
Bind Time 0.86s (± 0.81%) 0.86s (± 0.42%) +0.00s (+ 0.35%) 0.86s 0.87s
Check Time 5.76s (± 0.35%) 5.79s (± 0.51%) +0.03s (+ 0.56%) 5.73s 5.86s
Emit Time 6.35s (± 0.57%) 6.36s (± 0.87%) +0.01s (+ 0.14%) 6.28s 6.49s
Total Time 15.06s (± 0.29%) 15.11s (± 0.53%) +0.04s (+ 0.29%) 14.99s 15.34s
Compiler-Unions - node (v12.1.0, x64)
Memory used 194,065k (± 0.03%) 194,086k (± 0.10%) +22k (+ 0.01%) 193,412k 194,394k
Parse Time 0.82s (± 0.83%) 0.83s (± 1.02%) +0.01s (+ 0.85%) 0.81s 0.85s
Bind Time 0.55s (± 0.81%) 0.54s (± 1.10%) -0.00s (- 0.55%) 0.53s 0.55s
Check Time 7.54s (± 0.80%) 7.60s (± 0.53%) +0.06s (+ 0.77%) 7.48s 7.66s
Emit Time 2.51s (± 0.80%) 2.53s (± 0.64%) +0.02s (+ 0.92%) 2.50s 2.58s
Total Time 11.43s (± 0.69%) 11.51s (± 0.41%) +0.08s (+ 0.72%) 11.40s 11.62s
Monaco - node (v12.1.0, x64)
Memory used 326,953k (± 0.02%) 326,951k (± 0.02%) -2k (- 0.00%) 326,794k 327,067k
Parse Time 1.58s (± 0.65%) 1.57s (± 0.70%) -0.01s (- 0.51%) 1.54s 1.59s
Bind Time 0.75s (± 0.45%) 0.76s (± 0.45%) +0.01s (+ 1.33%) 0.76s 0.77s
Check Time 5.79s (± 0.41%) 5.80s (± 0.37%) +0.01s (+ 0.21%) 5.75s 5.84s
Emit Time 3.30s (± 0.55%) 3.32s (± 1.57%) +0.01s (+ 0.36%) 3.24s 3.51s
Total Time 11.43s (± 0.33%) 11.45s (± 0.57%) +0.02s (+ 0.20%) 11.35s 11.65s
TFS - node (v12.1.0, x64)
Memory used 289,674k (± 0.02%) 289,737k (± 0.02%) +63k (+ 0.02%) 289,603k 289,860k
Parse Time 1.30s (± 0.69%) 1.31s (± 1.11%) +0.02s (+ 1.39%) 1.29s 1.35s
Bind Time 0.73s (± 0.92%) 0.73s (± 0.80%) 0.00s ( 0.00%) 0.71s 0.74s
Check Time 5.35s (± 0.65%) 5.32s (± 0.58%) -0.03s (- 0.54%) 5.26s 5.40s
Emit Time 3.52s (± 0.67%) 3.51s (± 1.09%) -0.01s (- 0.31%) 3.44s 3.61s
Total Time 10.89s (± 0.55%) 10.87s (± 0.55%) -0.02s (- 0.19%) 10.71s 10.98s
material-ui - node (v12.1.0, x64)
Memory used 448,033k (± 0.06%) 448,155k (± 0.01%) +122k (+ 0.03%) 448,082k 448,266k
Parse Time 1.83s (± 0.24%) 1.84s (± 0.33%) +0.01s (+ 0.38%) 1.82s 1.85s
Bind Time 0.68s (± 0.33%) 0.68s (± 1.00%) +0.00s (+ 0.59%) 0.67s 0.70s
Check Time 12.99s (± 0.66%) 13.07s (± 0.41%) +0.09s (+ 0.65%) 12.96s 13.19s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.50s (± 0.55%) 15.59s (± 0.36%) +0.09s (+ 0.61%) 15.46s 15.72s
xstate - node (v12.1.0, x64)
Memory used 546,478k (± 1.31%) 549,702k (± 1.74%) +3,224k (+ 0.59%) 543,116k 575,498k
Parse Time 2.55s (± 0.54%) 2.55s (± 0.54%) 0.00s ( 0.00%) 2.52s 2.57s
Bind Time 1.04s (± 1.33%) 1.03s (± 0.97%) -0.01s (- 0.58%) 1.01s 1.06s
Check Time 1.50s (± 0.78%) 1.49s (± 0.47%) -0.00s (- 0.33%) 1.48s 1.51s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 5.16s (± 0.39%) 5.15s (± 0.40%) -0.01s (- 0.21%) 5.11s 5.19s
Angular - node (v14.15.1, x64)
Memory used 335,216k (± 0.01%) 335,248k (± 0.01%) +32k (+ 0.01%) 335,171k 335,321k
Parse Time 2.06s (± 0.69%) 2.07s (± 0.72%) +0.02s (+ 0.83%) 2.04s 2.11s
Bind Time 0.90s (± 0.52%) 0.91s (± 0.84%) +0.01s (+ 0.56%) 0.89s 0.92s
Check Time 5.74s (± 0.48%) 5.78s (± 0.44%) +0.04s (+ 0.78%) 5.73s 5.83s
Emit Time 6.44s (± 0.91%) 6.45s (± 0.91%) +0.00s (+ 0.08%) 6.30s 6.55s
Total Time 15.13s (± 0.52%) 15.20s (± 0.53%) +0.07s (+ 0.46%) 15.04s 15.40s
Compiler-Unions - node (v14.15.1, x64)
Memory used 193,007k (± 0.38%) 192,680k (± 0.01%) -327k (- 0.17%) 192,647k 192,720k
Parse Time 0.85s (± 0.58%) 0.85s (± 0.80%) +0.01s (+ 0.95%) 0.84s 0.87s
Bind Time 0.57s (± 0.82%) 0.57s (± 0.78%) +0.00s (+ 0.35%) 0.56s 0.58s
Check Time 7.68s (± 0.42%) 7.72s (± 0.60%) +0.04s (+ 0.53%) 7.61s 7.81s
Emit Time 2.52s (± 0.81%) 2.50s (± 0.58%) -0.02s (- 0.67%) 2.47s 2.55s
Total Time 11.61s (± 0.34%) 11.65s (± 0.48%) +0.03s (+ 0.28%) 11.50s 11.74s
Monaco - node (v14.15.1, x64)
Memory used 325,630k (± 0.01%) 325,634k (± 0.01%) +4k (+ 0.00%) 325,597k 325,672k
Parse Time 1.57s (± 0.72%) 1.58s (± 0.71%) +0.01s (+ 0.51%) 1.56s 1.60s
Bind Time 0.79s (± 0.62%) 0.79s (± 0.86%) +0.00s (+ 0.13%) 0.78s 0.81s
Check Time 5.70s (± 0.36%) 5.68s (± 0.36%) -0.02s (- 0.30%) 5.65s 5.73s
Emit Time 3.36s (± 0.67%) 3.36s (± 0.92%) -0.00s (- 0.03%) 3.32s 3.46s
Total Time 11.43s (± 0.37%) 11.42s (± 0.32%) -0.01s (- 0.11%) 11.34s 11.53s
TFS - node (v14.15.1, x64)
Memory used 288,801k (± 0.01%) 288,780k (± 0.01%) -21k (- 0.01%) 288,736k 288,821k
Parse Time 1.33s (± 1.43%) 1.33s (± 1.69%) -0.01s (- 0.60%) 1.29s 1.36s
Bind Time 0.76s (± 3.06%) 0.77s (± 3.87%) +0.01s (+ 1.58%) 0.74s 0.86s
Check Time 5.32s (± 0.42%) 5.33s (± 0.46%) +0.02s (+ 0.30%) 5.28s 5.38s
Emit Time 3.59s (± 2.23%) 3.60s (± 2.01%) +0.01s (+ 0.28%) 3.49s 3.77s
Total Time 10.99s (± 0.93%) 11.03s (± 0.78%) +0.03s (+ 0.29%) 10.85s 11.24s
material-ui - node (v14.15.1, x64)
Memory used 446,258k (± 0.06%) 446,355k (± 0.01%) +97k (+ 0.02%) 446,295k 446,410k
Parse Time 1.88s (± 0.48%) 1.88s (± 0.55%) +0.00s (+ 0.11%) 1.86s 1.90s
Bind Time 0.73s (± 0.92%) 0.73s (± 1.21%) +0.01s (+ 0.96%) 0.71s 0.75s
Check Time 13.13s (± 0.72%) 13.21s (± 0.57%) +0.08s (+ 0.58%) 12.99s 13.37s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.74s (± 0.61%) 15.82s (± 0.49%) +0.09s (+ 0.56%) 15.59s 15.98s
xstate - node (v14.15.1, x64)
Memory used 541,051k (± 0.00%) 541,052k (± 0.00%) +1k (+ 0.00%) 541,024k 541,071k
Parse Time 2.60s (± 0.54%) 2.61s (± 0.28%) +0.01s (+ 0.31%) 2.59s 2.62s
Bind Time 1.14s (± 1.24%) 1.16s (± 0.88%) +0.02s (+ 1.67%) 1.13s 1.18s
Check Time 1.53s (± 0.53%) 1.54s (± 0.43%) +0.01s (+ 0.85%) 1.53s 1.56s
Emit Time 0.07s (± 0.00%) 0.07s (± 4.95%) +0.01s (+ 7.14%) 0.07s 0.08s
Total Time 5.34s (± 0.46%) 5.38s (± 0.22%) +0.04s (+ 0.69%) 5.35s 5.40s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-210-generic
Architecturex64
Available Memory16 GB
Available Memory15 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 49736 10
Baseline main 10
Comparison Report - main..49736
Metric main 49736 Delta Best Worst
xstateTSServer - node (v10.16.3, x64)
Initial load time 2,163.90ms (± 0.49%) 2,159.30ms (± 0.43%) -4.60ms (- 0.21%) 2,140.00ms 2,179.00ms
Geterr time 751.00ms (± 0.42%) 754.90ms (± 0.65%) +3.90ms (+ 0.52%) 747.00ms 767.00ms
References time 98.70ms (± 1.12%) 95.10ms (± 1.07%) 🟩-3.60ms (- 3.65%) 93.00ms 97.00ms
Navto time 252.40ms (± 1.30%) 252.10ms (± 1.33%) -0.30ms (- 0.12%) 246.00ms 259.00ms
Navto count 256.00 (± 0.00%) 256.00 (± 0.00%) 0.00 ( 0.00%) 256.00 256.00
Completions time 239.90ms (± 1.85%) 242.40ms (± 1.11%) +2.50ms (+ 1.04%) 235.00ms 249.00ms
Completions count 3,205.00 (± 0.00%) 3,205.00 (± 0.00%) 0.00 ( 0.00%) 3,205.00 3,205.00
xstateTSServer - node (v12.1.0, x64)
Initial load time 2,108.80ms (± 0.45%) 2,101.40ms (± 0.63%) -7.40ms (- 0.35%) 2,068.00ms 2,129.00ms
Geterr time 748.70ms (± 0.49%) 745.00ms (± 0.52%) -3.70ms (- 0.49%) 736.00ms 753.00ms
References time 67.60ms (± 0.54%) 67.90ms (± 1.03%) +0.30ms (+ 0.44%) 67.00ms 69.00ms
Navto time 236.10ms (± 0.89%) 240.10ms (± 1.66%) +4.00ms (+ 1.69%) 230.00ms 247.00ms
Navto count 256.00 (± 0.00%) 256.00 (± 0.00%) 0.00 ( 0.00%) 256.00 256.00
Completions time 244.40ms (± 1.47%) 241.60ms (± 0.83%) -2.80ms (- 1.15%) 237.00ms 246.00ms
Completions count 3,205.00 (± 0.00%) 3,205.00 (± 0.00%) 0.00 ( 0.00%) 3,205.00 3,205.00
xstateTSServer - node (v14.15.1, x64)
Initial load time 2,226.50ms (± 0.42%) 2,227.80ms (± 0.47%) +1.30ms (+ 0.06%) 2,209.00ms 2,258.00ms
Geterr time 762.30ms (± 0.44%) 764.60ms (± 0.42%) +2.30ms (+ 0.30%) 757.00ms 774.00ms
References time 68.10ms (± 1.24%) 65.90ms (± 2.16%) 🟩-2.20ms (- 3.23%) 62.00ms 69.00ms
Navto time 251.30ms (± 1.59%) 252.40ms (± 0.58%) +1.10ms (+ 0.44%) 250.00ms 256.00ms
Navto count 256.00 (± 0.00%) 256.00 (± 0.00%) 0.00 ( 0.00%) 256.00 256.00
Completions time 246.60ms (± 3.71%) 243.80ms (± 0.62%) -2.80ms (- 1.14%) 241.00ms 246.00ms
Completions count 3,205.00 (± 0.00%) 3,205.00 (± 0.00%) 0.00 ( 0.00%) 3,205.00 3,205.00
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-210-generic
Architecturex64
Available Memory16 GB
Available Memory15 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
  • xstateTSServer - node (v10.16.3, x64)
  • xstateTSServer - node (v12.1.0, x64)
  • xstateTSServer - node (v14.15.1, x64)
Benchmark Name Iterations
Current 49736 10
Baseline main 10

Developer Information:

Download Benchmark

Copy link
Member

@andrewbranch andrewbranch left a comment

Choose a reason for hiding this comment

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

Makes sense to me. Definitely get @rbuckton to double check though.

if (!iterationTypes) {
if (contextualReturnType.flags & TypeFlags.Union) {
contextualReturnType = filterType(contextualReturnType, type => {
const generator = createGeneratorReturnType(anyType, anyType, anyType, (functionFlags & FunctionFlags.Async) !== 0);
Copy link
Member

Choose a reason for hiding this comment

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

Maybe this should be hoisted out to a createTypeChecker singleton anyGenerator? (Maybe lazily initialized though)

@gabritto
Copy link
Member Author

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jun 30, 2022

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

Update: The results are in!

Copy link
Contributor

@rbuckton rbuckton left a comment

Choose a reason for hiding this comment

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

I think the approach is sound, but you're doing extra work by comparing the Generator type to each constituent.

if (contextualReturnType.flags & TypeFlags.Union) {
contextualReturnType = filterType(contextualReturnType, type => {
const generator = createGeneratorReturnType(anyType, anyType, anyType, (functionFlags & FunctionFlags.Async) !== 0);
return checkTypeAssignableTo(generator, type, /*errorNode*/ undefined);
Copy link
Contributor

Choose a reason for hiding this comment

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

getIterationTypeOfGeneratorFunctionReturnType will do this work for you (returning undefined if its not generator-like), would this work instead?

const isAsyncGenerator = (functionFlags & functionFlags.Async) !== 0;
const iterationReturnType = mapType(contextualReturnType,
    type => getIterationTypeOfGeneratorFunctionReturnType(IterationTypeKind.Return, type, isAsyncGenerator));
if (iterationReturnType) {
    return undefined;
}

mapType will remove undefined results, and will return undefined if all results were undefined, so it can also act as a filter.

Copy link
Member Author

Choose a reason for hiding this comment

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

The problem is that getIterationTypeOfGeneratorFunctionReturnType returns, e.g., any for type number, which is why I went for removing the useless union components in the first place. Should I somehow change the behavior of getIterationTypeOfGeneratorFunctionReturnType instead? That seemed more tricky.

Copy link
Contributor

@rbuckton rbuckton Jul 27, 2022

Choose a reason for hiding this comment

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

It returns any if the type passed is a number type? It's only supposed to return any if the type passed in is any. For anything else that isn't iterable it's supposed to return undefined.

Most of the relevant functions used by getIterationTypeOfX have something like the following at the top of the function:

if (isTypeAny(type)) {
    return anyIterationTypes;
}

Copy link
Member Author

Choose a reason for hiding this comment

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

Yes, it returns any. What happens is: we call getIterationTypeOfGeneratorFunctionReturnType with type number. This calls getIterationTypesOfGeneratorFunctionReturnType, which then returns getIterationTypesOfIterable(number, use, /*errorNode*/ undefined) || getIterationTypesOfIterator(number, resolver, /*errorNode*/ undefined).

getIterationTypesOfIterable(number, use, /*errorNode*/ undefined) returns undefined, so we return getIterationTypesOfIterator(number, resolver, /*errorNode*/ undefined).

getIterationTypesOfIterator(number, resolver, /*errorNode*/ undefined) eventually just tries to get the types of properties next, return, throw, which are all any for type number. So it returns something like IteratorType { next = any, throw = any, return = any }, from which we conclude that the generator return type of type number is any.
So yeah, in short, getIterationTypeOfGeneratorFunctionReturnType returns any for a non-iterable/iterator type like number, it doesn't return undefined.

I don't understand all the subtleties involved, so that's why I went with filtering the union by checking generator type assignability, but maybe I could be filtering using some of the other getIterationTypesX functions?

I think filtering by calling getIterationTypesOfIterable and seeing if it's undefined could maybe work at first, but the fact that when it returns undefined we also call getIterationTypesOfIterator seemed to suggest to me that getIterationTypesOfIterable didn't cover all of the cases of iterator/iterable types.

Let me know what you think.

Copy link
Contributor

Choose a reason for hiding this comment

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

It seems getIterationTypesOfIteratorSlow may be doing the wrong thing here. It should be returning noIterationTypes for number:

function getIterationTypesOfIteratorSlow(type: Type, resolver: IterationTypesResolver, errorNode: Node | undefined) {
    const iterationTypes = combineIterationTypes([
        getIterationTypesOfMethod(type, resolver, "next", errorNode),
        getIterationTypesOfMethod(type, resolver, "return", errorNode),
        getIterationTypesOfMethod(type, resolver, "throw", errorNode),
    ]);
    return setCachedIterationTypes(type, resolver.iteratorCacheKey, iterationTypes);
}
  • getIterationTypesOfMethod(number, resolver, "next", errorNode) - This is probably the culprit, as it should return undefined for type number, but instead returns anyIterationTypes due to this logic:
    // Both async and non-async iterators *must* have a `next` method.
    const methodSignatures = methodType ? getSignaturesOfType(methodType, SignatureKind.Call) : emptyArray;
    if (methodSignatures.length === 0) {
        if (errorNode) {
            const diagnostic = methodName === "next"
                ? resolver.mustHaveANextMethodDiagnostic
                : resolver.mustBeAMethodDiagnostic;
            error(errorNode, diagnostic, methodName);
        }
        return methodName === "next" ? anyIterationTypes : undefined;
     // ^- should probably just be `return undefined;`
    }
  • getIterationTypesOfMethod(number, resolver, "return", errorNode) - This looks like it returns undefined for type number, which is correct.
  • getIterationTypesOfMethod(number, resolver, "throw", errorNode) - This looks like it returns undefined for type number, which is correct.

The results of those three methods are passed to combineIterationTypes, which would then return noIterationTypes once the iteration types for the "next" method are corrected.

Copy link
Contributor

Choose a reason for hiding this comment

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

I need to look into this a bit further, as changing this results in some other additional diagnostics that we may not want.

Copy link
Contributor

Choose a reason for hiding this comment

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

The return value for getIterationTypesOfIteratorSlow should be fixed by #50146.

Copy link
Member Author

Choose a reason for hiding this comment

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

I ended up not using mapType in the way you suggested, because in the previous version of the code, when we call getIterationTypeOfGeneratorFunctionReturnType on a union, although it maps the workers to each component type in the union, the way it combines the resulting iterationTypes is specific, so I don't think we'd get the same result if we just called mapType, which just unions the resulting mapped types.

Copy link
Contributor

Choose a reason for hiding this comment

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

I think it should have produced the same type for IterationTypeKind.Return, since the logic in getIterationTypesOfIterable related to union types just appends the resulting types and unions them for yield and return, with a bit more in the way of caching and error reporting. The only case that would differ would be for IterationTypeKind.Next, since the next types are intersected rather than unioned.

if (!node.asteriskToken && contextualReturnType.flags & TypeFlags.Union) {
contextualReturnType = filterType(contextualReturnType, type => {
const generator = createGeneratorReturnType(anyType, anyType, anyType, isAsyncGenerator);
return checkTypeAssignableTo(generator, type, /*errorNode*/ undefined);
Copy link
Contributor

Choose a reason for hiding this comment

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

The same idea applies here as above.

@typescript-bot
Copy link
Collaborator

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

Here they are:

Compiler

Comparison Report - main..49736
Metric main 49736 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 359,627k (± 0.02%) 359,571k (± 0.02%) -55k (- 0.02%) 359,422k 359,712k
Parse Time 2.09s (± 0.50%) 2.09s (± 0.60%) +0.01s (+ 0.29%) 2.06s 2.12s
Bind Time 0.89s (± 0.75%) 0.91s (± 1.64%) +0.01s (+ 1.57%) 0.89s 0.96s
Check Time 5.94s (± 0.54%) 5.98s (± 0.61%) +0.04s (+ 0.76%) 5.93s 6.10s
Emit Time 6.09s (± 0.53%) 6.12s (± 0.71%) +0.03s (+ 0.43%) 6.04s 6.25s
Total Time 15.01s (± 0.31%) 15.10s (± 0.38%) +0.09s (+ 0.58%) 15.01s 15.25s
Compiler-Unions - node (v10.16.3, x64)
Memory used 206,408k (± 0.03%) 206,461k (± 0.03%) +53k (+ 0.03%) 206,302k 206,603k
Parse Time 0.83s (± 1.02%) 0.83s (± 0.99%) +0.00s (+ 0.36%) 0.82s 0.86s
Bind Time 0.53s (± 1.59%) 0.53s (± 1.63%) +0.00s (+ 0.57%) 0.52s 0.55s
Check Time 8.08s (± 0.47%) 8.07s (± 0.57%) -0.00s (- 0.05%) 8.00s 8.18s
Emit Time 2.48s (± 0.84%) 2.51s (± 1.11%) +0.03s (+ 1.17%) 2.47s 2.59s
Total Time 11.92s (± 0.37%) 11.95s (± 0.61%) +0.03s (+ 0.23%) 11.83s 12.11s
Monaco - node (v10.16.3, x64)
Memory used 343,860k (± 0.02%) 343,932k (± 0.01%) +72k (+ 0.02%) 343,838k 343,984k
Parse Time 1.59s (± 0.42%) 1.59s (± 0.63%) +0.01s (+ 0.50%) 1.57s 1.62s
Bind Time 0.76s (± 0.65%) 0.77s (± 0.72%) +0.00s (+ 0.39%) 0.76s 0.78s
Check Time 5.97s (± 0.38%) 5.97s (± 0.36%) +0.00s (+ 0.07%) 5.92s 6.02s
Emit Time 3.26s (± 0.79%) 3.26s (± 0.62%) -0.00s (- 0.09%) 3.23s 3.32s
Total Time 11.58s (± 0.26%) 11.59s (± 0.26%) +0.01s (+ 0.08%) 11.55s 11.69s
TFS - node (v10.16.3, x64)
Memory used 305,099k (± 0.02%) 305,111k (± 0.03%) +12k (+ 0.00%) 304,853k 305,285k
Parse Time 1.28s (± 0.59%) 1.29s (± 0.63%) +0.00s (+ 0.16%) 1.27s 1.31s
Bind Time 0.72s (± 0.83%) 0.73s (± 0.76%) +0.00s (+ 0.41%) 0.72s 0.74s
Check Time 5.40s (± 0.49%) 5.38s (± 0.57%) -0.02s (- 0.30%) 5.33s 5.45s
Emit Time 3.44s (± 1.45%) 3.41s (± 0.93%) -0.03s (- 0.99%) 3.36s 3.51s
Total Time 10.85s (± 0.45%) 10.80s (± 0.47%) -0.05s (- 0.47%) 10.72s 10.93s
material-ui - node (v10.16.3, x64)
Memory used 469,094k (± 0.01%) 469,075k (± 0.01%) -19k (- 0.00%) 468,926k 469,208k
Parse Time 1.83s (± 0.73%) 1.82s (± 0.65%) -0.01s (- 0.44%) 1.79s 1.85s
Bind Time 0.69s (± 1.52%) 0.69s (± 1.44%) 0.00s ( 0.00%) 0.66s 0.71s
Check Time 14.43s (± 0.42%) 14.40s (± 0.66%) -0.03s (- 0.22%) 14.27s 14.60s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 16.96s (± 0.39%) 16.92s (± 0.59%) -0.04s (- 0.22%) 16.77s 17.14s
xstate - node (v10.16.3, x64)
Memory used 577,820k (± 0.02%) 581,053k (± 1.26%) +3,233k (+ 0.56%) 577,680k 610,563k
Parse Time 2.60s (± 0.50%) 2.60s (± 0.46%) +0.00s (+ 0.19%) 2.57s 2.62s
Bind Time 1.03s (± 1.09%) 1.02s (± 0.91%) -0.01s (- 0.68%) 0.99s 1.04s
Check Time 1.54s (± 0.74%) 1.55s (± 0.37%) +0.01s (+ 0.32%) 1.54s 1.56s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 5.23s (± 0.33%) 5.23s (± 0.27%) +0.00s (+ 0.06%) 5.20s 5.26s
Angular - node (v12.1.0, x64)
Memory used 337,052k (± 0.08%) 337,191k (± 0.02%) +138k (+ 0.04%) 337,059k 337,313k
Parse Time 2.09s (± 0.63%) 2.09s (± 1.05%) +0.00s (+ 0.14%) 2.04s 2.13s
Bind Time 0.87s (± 1.00%) 0.87s (± 0.77%) -0.00s (- 0.12%) 0.86s 0.89s
Check Time 5.78s (± 0.44%) 5.78s (± 0.48%) +0.01s (+ 0.12%) 5.74s 5.86s
Emit Time 6.35s (± 0.77%) 6.38s (± 1.18%) +0.03s (+ 0.41%) 6.28s 6.66s
Total Time 15.08s (± 0.50%) 15.12s (± 0.51%) +0.04s (+ 0.24%) 15.01s 15.35s
Compiler-Unions - node (v12.1.0, x64)
Memory used 193,946k (± 0.11%) 194,071k (± 0.09%) +125k (+ 0.06%) 193,399k 194,287k
Parse Time 0.83s (± 0.82%) 0.83s (± 0.57%) +0.00s (+ 0.48%) 0.82s 0.84s
Bind Time 0.55s (± 1.06%) 0.55s (± 1.09%) -0.00s (- 0.18%) 0.54s 0.56s
Check Time 7.61s (± 0.56%) 7.63s (± 0.68%) +0.02s (+ 0.26%) 7.49s 7.70s
Emit Time 2.56s (± 1.39%) 2.53s (± 0.90%) -0.02s (- 0.94%) 2.49s 2.60s
Total Time 11.54s (± 0.61%) 11.54s (± 0.36%) -0.00s (- 0.03%) 11.42s 11.63s
Monaco - node (v12.1.0, x64)
Memory used 326,896k (± 0.02%) 326,930k (± 0.02%) +34k (+ 0.01%) 326,785k 327,083k
Parse Time 1.57s (± 0.74%) 1.59s (± 0.42%) +0.01s (+ 0.83%) 1.57s 1.60s
Bind Time 0.76s (± 0.77%) 0.77s (± 0.87%) +0.01s (+ 1.32%) 0.76s 0.79s
Check Time 5.77s (± 0.61%) 5.80s (± 0.33%) +0.03s (+ 0.54%) 5.76s 5.85s
Emit Time 3.30s (± 1.00%) 3.33s (± 1.41%) +0.03s (+ 0.85%) 3.26s 3.50s
Total Time 11.40s (± 0.62%) 11.48s (± 0.48%) +0.08s (+ 0.70%) 11.39s 11.64s
TFS - node (v12.1.0, x64)
Memory used 289,785k (± 0.03%) 289,648k (± 0.06%) -137k (- 0.05%) 288,946k 289,786k
Parse Time 1.30s (± 1.20%) 1.30s (± 0.56%) +0.00s (+ 0.39%) 1.29s 1.32s
Bind Time 0.73s (± 0.94%) 0.72s (± 0.51%) -0.00s (- 0.14%) 0.72s 0.73s
Check Time 5.33s (± 0.18%) 5.33s (± 0.33%) -0.01s (- 0.15%) 5.27s 5.35s
Emit Time 3.52s (± 0.74%) 3.55s (± 1.07%) +0.03s (+ 0.91%) 3.44s 3.62s
Total Time 10.87s (± 0.37%) 10.90s (± 0.34%) +0.03s (+ 0.26%) 10.78s 10.99s
material-ui - node (v12.1.0, x64)
Memory used 447,942k (± 0.09%) 448,093k (± 0.06%) +151k (+ 0.03%) 447,062k 448,333k
Parse Time 1.83s (± 0.41%) 1.83s (± 0.41%) +0.01s (+ 0.33%) 1.82s 1.85s
Bind Time 0.68s (± 0.66%) 0.68s (± 0.49%) +0.00s (+ 0.29%) 0.67s 0.69s
Check Time 13.01s (± 0.69%) 13.10s (± 0.92%) +0.09s (+ 0.70%) 12.84s 13.30s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.51s (± 0.59%) 15.61s (± 0.80%) +0.10s (+ 0.62%) 15.33s 15.83s
xstate - node (v12.1.0, x64)
Memory used 546,484k (± 1.31%) 543,258k (± 0.02%) -3,226k (- 0.59%) 543,012k 543,607k
Parse Time 2.55s (± 0.58%) 2.56s (± 0.54%) +0.01s (+ 0.35%) 2.54s 2.59s
Bind Time 1.04s (± 1.17%) 1.04s (± 0.91%) -0.00s (- 0.38%) 1.02s 1.06s
Check Time 1.49s (± 0.52%) 1.49s (± 0.45%) -0.00s (- 0.07%) 1.47s 1.50s
Emit Time 0.07s (± 0.00%) 0.07s (± 3.14%) +0.00s (+ 1.43%) 0.07s 0.08s
Total Time 5.15s (± 0.33%) 5.16s (± 0.33%) +0.01s (+ 0.17%) 5.12s 5.20s
Angular - node (v14.15.1, x64)
Memory used 335,281k (± 0.01%) 335,263k (± 0.01%) -18k (- 0.01%) 335,191k 335,354k
Parse Time 2.05s (± 0.72%) 2.08s (± 0.82%) +0.02s (+ 1.17%) 2.04s 2.13s
Bind Time 0.90s (± 0.75%) 0.90s (± 0.99%) +0.01s (+ 0.78%) 0.88s 0.92s
Check Time 5.74s (± 0.41%) 5.73s (± 0.40%) -0.01s (- 0.19%) 5.69s 5.78s
Emit Time 6.39s (± 0.85%) 6.41s (± 0.65%) +0.02s (+ 0.31%) 6.29s 6.49s
Total Time 15.08s (± 0.50%) 15.12s (± 0.24%) +0.04s (+ 0.25%) 15.02s 15.18s
Compiler-Unions - node (v14.15.1, x64)
Memory used 192,598k (± 0.08%) 192,491k (± 0.16%) -106k (- 0.06%) 191,606k 192,785k
Parse Time 0.84s (± 0.58%) 0.85s (± 0.61%) +0.01s (+ 0.59%) 0.84s 0.86s
Bind Time 0.57s (± 1.43%) 0.58s (± 1.50%) +0.01s (+ 0.87%) 0.57s 0.60s
Check Time 7.65s (± 0.89%) 7.73s (± 0.65%) +0.08s (+ 1.03%) 7.58s 7.83s
Emit Time 2.52s (± 0.49%) 2.54s (± 1.02%) +0.02s (+ 0.63%) 2.51s 2.62s
Total Time 11.58s (± 0.70%) 11.69s (± 0.53%) +0.11s (+ 0.92%) 11.51s 11.80s
Monaco - node (v14.15.1, x64)
Memory used 325,644k (± 0.01%) 325,630k (± 0.00%) -15k (- 0.00%) 325,594k 325,663k
Parse Time 1.58s (± 0.52%) 1.58s (± 0.30%) -0.00s (- 0.25%) 1.57s 1.59s
Bind Time 0.79s (± 0.38%) 0.80s (± 1.08%) +0.01s (+ 1.26%) 0.79s 0.83s
Check Time 5.69s (± 0.48%) 5.70s (± 0.44%) +0.01s (+ 0.26%) 5.64s 5.75s
Emit Time 3.37s (± 0.53%) 3.37s (± 0.87%) +0.01s (+ 0.24%) 3.31s 3.44s
Total Time 11.43s (± 0.29%) 11.46s (± 0.48%) +0.03s (+ 0.24%) 11.34s 11.55s
TFS - node (v14.15.1, x64)
Memory used 288,776k (± 0.01%) 288,801k (± 0.01%) +25k (+ 0.01%) 288,758k 288,868k
Parse Time 1.33s (± 1.22%) 1.33s (± 1.31%) -0.00s (- 0.08%) 1.29s 1.36s
Bind Time 0.75s (± 2.10%) 0.77s (± 4.32%) +0.02s (+ 3.06%) 0.74s 0.87s
Check Time 5.32s (± 0.42%) 5.33s (± 0.51%) +0.01s (+ 0.15%) 5.28s 5.40s
Emit Time 3.57s (± 2.54%) 3.61s (± 2.11%) +0.04s (+ 1.20%) 3.44s 3.77s
Total Time 10.97s (± 0.83%) 11.05s (± 0.71%) +0.08s (+ 0.69%) 10.87s 11.22s
material-ui - node (v14.15.1, x64)
Memory used 446,339k (± 0.01%) 446,362k (± 0.01%) +24k (+ 0.01%) 446,303k 446,419k
Parse Time 1.87s (± 0.60%) 1.88s (± 0.57%) +0.01s (+ 0.43%) 1.85s 1.90s
Bind Time 0.72s (± 1.15%) 0.73s (± 0.96%) +0.01s (+ 0.83%) 0.71s 0.74s
Check Time 13.12s (± 0.56%) 13.22s (± 0.72%) +0.10s (+ 0.74%) 13.03s 13.42s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.72s (± 0.51%) 15.83s (± 0.63%) +0.11s (+ 0.72%) 15.63s 16.04s
xstate - node (v14.15.1, x64)
Memory used 541,035k (± 0.00%) 541,047k (± 0.00%) +12k (+ 0.00%) 541,005k 541,110k
Parse Time 2.60s (± 0.61%) 2.61s (± 0.25%) +0.01s (+ 0.50%) 2.60s 2.62s
Bind Time 1.14s (± 1.09%) 1.16s (± 1.34%) +0.03s (+ 2.29%) 1.11s 1.19s
Check Time 1.54s (± 0.64%) 1.54s (± 0.73%) +0.00s (+ 0.07%) 1.52s 1.56s
Emit Time 0.07s (± 4.95%) 0.07s (± 4.92%) -0.00s (- 1.33%) 0.07s 0.08s
Total Time 5.35s (± 0.40%) 5.39s (± 0.36%) +0.04s (+ 0.73%) 5.35s 5.44s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-210-generic
Architecturex64
Available Memory16 GB
Available Memory15 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 49736 10
Baseline main 10

TSServer

Comparison Report - main..49736
Metric main 49736 Delta Best Worst
xstateTSServer - node (v10.16.3, x64)
Initial load time 2,163.90ms (± 0.49%) 2,154.80ms (± 0.42%) -9.10ms (- 0.42%) 2,139.00ms 2,181.00ms
Geterr time 751.00ms (± 0.42%) 753.20ms (± 0.79%) +2.20ms (+ 0.29%) 742.00ms 766.00ms
References time 98.70ms (± 1.12%) 95.90ms (± 1.06%) -2.80ms (- 2.84%) 93.00ms 98.00ms
Navto time 252.40ms (± 1.30%) 250.70ms (± 0.83%) -1.70ms (- 0.67%) 246.00ms 255.00ms
Navto count 256.00 (± 0.00%) 256.00 (± 0.00%) 0.00 ( 0.00%) 256.00 256.00
Completions time 239.90ms (± 1.85%) 245.20ms (± 1.46%) +5.30ms (+ 2.21%) 236.00ms 251.00ms
Completions count 3,205.00 (± 0.00%) 3,205.00 (± 0.00%) 0.00 ( 0.00%) 3,205.00 3,205.00
xstateTSServer - node (v12.1.0, x64)
Initial load time 2,108.80ms (± 0.45%) 2,099.80ms (± 0.59%) -9.00ms (- 0.43%) 2,068.00ms 2,127.00ms
Geterr time 748.70ms (± 0.49%) 743.90ms (± 0.64%) -4.80ms (- 0.64%) 732.00ms 752.00ms
References time 67.60ms (± 0.54%) 67.30ms (± 1.11%) -0.30ms (- 0.44%) 66.00ms 69.00ms
Navto time 236.10ms (± 0.89%) 241.60ms (± 0.98%) +5.50ms (+ 2.33%) 239.00ms 247.00ms
Navto count 256.00 (± 0.00%) 256.00 (± 0.00%) 0.00 ( 0.00%) 256.00 256.00
Completions time 244.40ms (± 1.47%) 239.60ms (± 1.03%) -4.80ms (- 1.96%) 233.00ms 244.00ms
Completions count 3,205.00 (± 0.00%) 3,205.00 (± 0.00%) 0.00 ( 0.00%) 3,205.00 3,205.00
xstateTSServer - node (v14.15.1, x64)
Initial load time 2,226.50ms (± 0.42%) 2,235.50ms (± 0.53%) +9.00ms (+ 0.40%) 2,203.00ms 2,258.00ms
Geterr time 762.30ms (± 0.44%) 766.60ms (± 0.62%) +4.30ms (+ 0.56%) 755.00ms 776.00ms
References time 68.10ms (± 1.24%) 64.50ms (± 1.29%) 🟩-3.60ms (- 5.29%) 63.00ms 66.00ms
Navto time 251.30ms (± 1.59%) 251.40ms (± 0.87%) +0.10ms (+ 0.04%) 247.00ms 257.00ms
Navto count 256.00 (± 0.00%) 256.00 (± 0.00%) 0.00 ( 0.00%) 256.00 256.00
Completions time 246.60ms (± 3.71%) 243.90ms (± 0.92%) -2.70ms (- 1.09%) 239.00ms 249.00ms
Completions count 3,205.00 (± 0.00%) 3,205.00 (± 0.00%) 0.00 ( 0.00%) 3,205.00 3,205.00
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-210-generic
Architecturex64
Available Memory16 GB
Available Memory15 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
  • xstateTSServer - node (v10.16.3, x64)
  • xstateTSServer - node (v12.1.0, x64)
  • xstateTSServer - node (v14.15.1, x64)
Benchmark Name Iterations
Current 49736 10
Baseline main 10

Developer Information:

Download Benchmark

@gabritto
Copy link
Member Author

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jul 19, 2022

Heya @gabritto, I've started to run the perf test suite on this PR at e955108. 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:

Compiler

Comparison Report - main..49736
Metric main 49736 Delta Best Worst
Angular - node (v16.15.1, x64)
Memory used 341,549k (± 0.02%) 340,962k (± 0.02%) -587k (- 0.17%) 340,765k 341,039k
Parse Time 1.92s (± 0.61%) 1.90s (± 0.72%) -0.02s (- 0.84%) 1.87s 1.93s
Bind Time 0.81s (± 0.58%) 0.82s (± 1.01%) +0.00s (+ 0.37%) 0.80s 0.84s
Check Time 5.64s (± 0.31%) 5.62s (± 0.51%) -0.02s (- 0.43%) 5.54s 5.67s
Emit Time 6.23s (± 0.63%) 6.24s (± 0.93%) +0.01s (+ 0.11%) 6.12s 6.37s
Total Time 14.60s (± 0.40%) 14.57s (± 0.48%) -0.03s (- 0.21%) 14.40s 14.77s
Compiler-Unions - node (v16.15.1, x64)
Memory used 198,260k (± 0.49%) 198,312k (± 0.58%) +52k (+ 0.03%) 197,224k 200,743k
Parse Time 0.78s (± 1.13%) 0.78s (± 0.85%) +0.00s (+ 0.00%) 0.77s 0.80s
Bind Time 0.51s (± 0.88%) 0.51s (± 0.88%) -0.00s (- 0.00%) 0.50s 0.52s
Check Time 6.54s (± 0.60%) 6.54s (± 0.49%) -0.01s (- 0.08%) 6.49s 6.63s
Emit Time 2.34s (± 0.76%) 2.32s (± 0.29%) -0.02s (- 0.98%) 2.31s 2.34s
Total Time 10.17s (± 0.47%) 10.14s (± 0.30%) -0.03s (- 0.31%) 10.08s 10.22s
Monaco - node (v16.15.1, x64)
Memory used 330,028k (± 0.01%) 330,114k (± 0.01%) +85k (+ 0.03%) 330,072k 330,208k
Parse Time 1.44s (± 0.77%) 1.43s (± 0.87%) -0.01s (- 0.63%) 1.41s 1.47s
Bind Time 0.73s (± 0.85%) 0.74s (± 0.79%) +0.01s (+ 1.10%) 0.72s 0.75s
Check Time 5.47s (± 0.52%) 5.44s (± 0.62%) -0.02s (- 0.42%) 5.38s 5.53s
Emit Time 3.29s (± 0.75%) 3.28s (± 0.64%) -0.00s (- 0.09%) 3.22s 3.31s
Total Time 10.92s (± 0.31%) 10.89s (± 0.46%) -0.02s (- 0.23%) 10.81s 10.99s
TFS - node (v16.15.1, x64)
Memory used 293,072k (± 0.02%) 293,043k (± 0.02%) -29k (- 0.01%) 292,912k 293,105k
Parse Time 1.21s (± 0.90%) 1.22s (± 0.99%) +0.01s (+ 0.75%) 1.19s 1.24s
Bind Time 0.68s (± 0.85%) 0.69s (± 0.53%) +0.00s (+ 0.44%) 0.68s 0.69s
Check Time 5.07s (± 0.31%) 5.09s (± 0.37%) +0.01s (+ 0.28%) 5.03s 5.12s
Emit Time 3.46s (± 0.48%) 3.45s (± 0.85%) -0.01s (- 0.35%) 3.37s 3.51s
Total Time 10.43s (± 0.23%) 10.44s (± 0.40%) +0.01s (+ 0.11%) 10.34s 10.51s
material-ui - node (v16.15.1, x64)
Memory used 450,483k (± 0.02%) 450,431k (± 0.00%) -52k (- 0.01%) 450,377k 450,458k
Parse Time 1.67s (± 0.40%) 1.66s (± 0.46%) -0.00s (- 0.18%) 1.65s 1.68s
Bind Time 0.61s (± 0.97%) 0.62s (± 0.94%) +0.00s (+ 0.49%) 0.61s 0.63s
Check Time 12.99s (± 0.62%) 12.94s (± 0.62%) -0.05s (- 0.38%) 12.79s 13.12s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.27s (± 0.57%) 15.23s (± 0.55%) -0.05s (- 0.30%) 15.04s 15.43s
xstate - node (v16.15.1, x64)
Memory used 552,006k (± 0.01%) 551,895k (± 0.01%) -111k (- 0.02%) 551,757k 552,033k
Parse Time 2.34s (± 0.32%) 2.33s (± 0.51%) -0.01s (- 0.43%) 2.32s 2.37s
Bind Time 1.01s (± 0.83%) 1.01s (± 2.58%) -0.00s (- 0.20%) 0.94s 1.07s
Check Time 1.50s (± 0.71%) 1.50s (± 0.93%) -0.01s (- 0.40%) 1.47s 1.52s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 4.93s (± 0.28%) 4.91s (± 0.53%) -0.02s (- 0.49%) 4.84s 4.98s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-210-generic
Architecturex64
Available Memory16 GB
Available Memory15 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v16.15.1, x64)
Scenarios
  • Angular - node (v16.15.1, x64)
  • Compiler-Unions - node (v16.15.1, x64)
  • Monaco - node (v16.15.1, x64)
  • TFS - node (v16.15.1, x64)
  • material-ui - node (v16.15.1, x64)
  • xstate - node (v16.15.1, x64)
Benchmark Name Iterations
Current 49736 10
Baseline main 10

TSServer

Comparison Report - main..49736
Metric main 49736 Delta Best Worst
Compiler-UnionsTSServer - node (v16.15.1, x64)
Req 1 - updateOpen 1,389ms (± 0.46%) 1,381ms (± 0.56%) -8ms (- 0.58%) 1,362ms 1,402ms
Req 2 - geterr 3,286ms (± 0.68%) 3,318ms (± 0.90%) +32ms (+ 0.98%) 3,256ms 3,373ms
Req 3 - references 235ms (± 0.62%) 234ms (± 0.89%) -1ms (- 0.43%) 229ms 238ms
Req 4 - navto 182ms (± 0.86%) 179ms (± 0.69%) -3ms (- 1.54%) 177ms 182ms
Req 5 - completionInfo count 1,355 (± 0.00%) 1,355 (± 0.00%) 0 ( 0.00%) 1,355 1,355
Req 5 - completionInfo 85ms (± 4.01%) 87ms (± 0.83%) +2ms (+ 2.47%) 86ms 89ms
CompilerTSServer - node (v16.15.1, x64)
Req 1 - updateOpen 1,464ms (± 0.60%) 1,457ms (± 0.32%) -7ms (- 0.44%) 1,447ms 1,468ms
Req 2 - geterr 2,133ms (± 0.62%) 2,127ms (± 0.44%) -6ms (- 0.30%) 2,107ms 2,146ms
Req 3 - references 247ms (± 0.96%) 246ms (± 0.81%) -1ms (- 0.28%) 243ms 253ms
Req 4 - navto 188ms (± 0.69%) 187ms (± 0.56%) -1ms (- 0.27%) 185ms 189ms
Req 5 - completionInfo count 1,517 (± 0.00%) 1,517 (± 0.00%) 0 ( 0.00%) 1,517 1,517
Req 5 - completionInfo 55ms (± 1.81%) 52ms (± 3.09%) 🟩-3ms (- 5.27%) 50ms 57ms
xstateTSServer - node (v16.15.1, x64)
Req 1 - updateOpen 1,997ms (± 0.34%) 1,982ms (± 0.57%) -14ms (- 0.72%) 1,963ms 2,006ms
Req 2 - geterr 765ms (± 0.46%) 746ms (± 0.62%) -19ms (- 2.46%) 737ms 754ms
Req 3 - references 66ms (± 1.99%) 64ms (± 1.62%) 🟩-2ms (- 3.02%) 62ms 66ms
Req 4 - navto 220ms (± 1.16%) 217ms (± 1.11%) -3ms (- 1.54%) 213ms 222ms
Req 5 - completionInfo count 3,244 (± 0.00%) 3,244 (± 0.00%) 0 ( 0.00%) 3,244 3,244
Req 5 - completionInfo 256ms (± 1.33%) 259ms (± 1.32%) +3ms (+ 1.13%) 254ms 268ms
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-210-generic
Architecturex64
Available Memory16 GB
Available Memory15 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v16.15.1, x64)
Scenarios
  • Compiler-UnionsTSServer - node (v16.15.1, x64)
  • CompilerTSServer - node (v16.15.1, x64)
  • xstateTSServer - node (v16.15.1, x64)
Benchmark Name Iterations
Current 49736 10
Baseline main 10

Developer Information:

Download Benchmark

@gabritto gabritto requested a review from rbuckton August 4, 2022 23:25
@gabritto
Copy link
Member Author

gabritto commented Aug 5, 2022

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Aug 5, 2022

Heya @gabritto, I've started to run the perf test suite on this PR at f6132ca. 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:

Compiler

Comparison Report - main..49736
Metric main 49736 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 360,442k (± 0.01%) 360,500k (± 0.02%) +58k (+ 0.02%) 360,372k 360,670k
Parse Time 2.11s (± 0.71%) 2.12s (± 0.61%) +0.01s (+ 0.28%) 2.09s 2.15s
Bind Time 0.90s (± 0.91%) 0.90s (± 0.75%) 0.00s ( 0.00%) 0.88s 0.91s
Check Time 6.03s (± 0.41%) 6.06s (± 0.44%) +0.02s (+ 0.38%) 6.01s 6.12s
Emit Time 6.16s (± 0.53%) 6.17s (± 0.45%) +0.01s (+ 0.18%) 6.10s 6.23s
Total Time 15.20s (± 0.37%) 15.24s (± 0.40%) +0.04s (+ 0.26%) 15.10s 15.38s
Compiler-Unions - node (v10.16.3, x64)
Memory used 205,485k (± 0.04%) 205,537k (± 0.03%) +51k (+ 0.03%) 205,437k 205,657k
Parse Time 0.84s (± 0.81%) 0.84s (± 0.99%) 0.00s ( 0.00%) 0.82s 0.85s
Bind Time 0.53s (± 1.29%) 0.53s (± 0.94%) +0.00s (+ 0.00%) 0.52s 0.54s
Check Time 7.12s (± 0.66%) 7.15s (± 0.48%) +0.03s (+ 0.37%) 7.07s 7.21s
Emit Time 2.53s (± 1.22%) 2.54s (± 1.12%) +0.01s (+ 0.51%) 2.48s 2.62s
Total Time 11.02s (± 0.52%) 11.05s (± 0.51%) +0.04s (+ 0.34%) 10.91s 11.14s
Monaco - node (v10.16.3, x64)
Memory used 343,969k (± 0.02%) 343,933k (± 0.02%) -36k (- 0.01%) 343,796k 344,047k
Parse Time 1.61s (± 0.60%) 1.61s (± 0.84%) 0.00s ( 0.00%) 1.59s 1.64s
Bind Time 0.76s (± 1.02%) 0.76s (± 0.87%) +0.00s (+ 0.13%) 0.75s 0.77s
Check Time 6.00s (± 0.39%) 6.02s (± 0.31%) +0.01s (+ 0.22%) 5.98s 6.07s
Emit Time 3.27s (± 0.66%) 3.29s (± 0.87%) +0.02s (+ 0.58%) 3.25s 3.36s
Total Time 11.65s (± 0.41%) 11.68s (± 0.33%) +0.04s (+ 0.31%) 11.61s 11.77s
TFS - node (v10.16.3, x64)
Memory used 305,218k (± 0.02%) 305,248k (± 0.02%) +29k (+ 0.01%) 305,107k 305,385k
Parse Time 1.29s (± 0.76%) 1.29s (± 0.37%) +0.00s (+ 0.08%) 1.28s 1.30s
Bind Time 0.72s (± 0.80%) 0.72s (± 0.81%) -0.01s (- 0.83%) 0.70s 0.73s
Check Time 5.46s (± 0.48%) 5.45s (± 0.54%) -0.01s (- 0.18%) 5.38s 5.53s
Emit Time 3.44s (± 0.87%) 3.46s (± 0.95%) +0.02s (+ 0.46%) 3.39s 3.53s
Total Time 10.92s (± 0.24%) 10.92s (± 0.45%) -0.00s (- 0.01%) 10.79s 11.01s
material-ui - node (v10.16.3, x64)
Memory used 469,536k (± 0.01%) 469,539k (± 0.02%) +4k (+ 0.00%) 469,281k 469,732k
Parse Time 1.84s (± 0.54%) 1.86s (± 0.64%) +0.02s (+ 1.20%) 1.84s 1.89s
Bind Time 0.69s (± 1.42%) 0.68s (± 1.58%) -0.01s (- 1.88%) 0.66s 0.70s
Check Time 14.61s (± 0.77%) 14.79s (± 0.45%) +0.19s (+ 1.28%) 14.65s 14.91s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 17.14s (± 0.68%) 17.33s (± 0.40%) +0.19s (+ 1.13%) 17.18s 17.46s
xstate - node (v10.16.3, x64)
Memory used 581,902k (± 1.27%) 581,959k (± 1.26%) +57k (+ 0.01%) 578,568k 611,506k
Parse Time 2.62s (± 0.40%) 2.62s (± 0.31%) -0.00s (- 0.15%) 2.60s 2.64s
Bind Time 1.03s (± 0.29%) 1.03s (± 0.97%) +0.00s (+ 0.19%) 1.02s 1.06s
Check Time 1.58s (± 0.48%) 1.57s (± 0.54%) -0.01s (- 0.88%) 1.55s 1.59s
Emit Time 0.07s (± 0.00%) 0.07s (± 3.14%) +0.00s (+ 1.43%) 0.07s 0.08s
Total Time 5.30s (± 0.20%) 5.29s (± 0.35%) -0.01s (- 0.21%) 5.25s 5.33s
Angular - node (v12.1.0, x64)
Memory used 337,957k (± 0.02%) 338,058k (± 0.02%) +101k (+ 0.03%) 337,880k 338,314k
Parse Time 2.10s (± 0.72%) 2.10s (± 0.61%) -0.00s (- 0.05%) 2.06s 2.12s
Bind Time 0.86s (± 0.55%) 0.87s (± 1.39%) +0.00s (+ 0.35%) 0.85s 0.91s
Check Time 5.84s (± 0.57%) 5.85s (± 0.43%) +0.00s (+ 0.05%) 5.78s 5.89s
Emit Time 6.40s (± 0.86%) 6.39s (± 0.58%) -0.01s (- 0.09%) 6.29s 6.47s
Total Time 15.21s (± 0.56%) 15.21s (± 0.34%) -0.00s (- 0.01%) 15.06s 15.31s
Compiler-Unions - node (v12.1.0, x64)
Memory used 193,207k (± 0.04%) 193,438k (± 0.29%) +231k (+ 0.12%) 192,554k 195,613k
Parse Time 0.84s (± 0.81%) 0.83s (± 0.82%) -0.01s (- 1.20%) 0.82s 0.85s
Bind Time 0.54s (± 0.91%) 0.55s (± 1.12%) +0.01s (+ 0.92%) 0.54s 0.56s
Check Time 6.69s (± 0.42%) 6.64s (± 0.48%) -0.05s (- 0.67%) 6.56s 6.71s
Emit Time 2.53s (± 1.01%) 2.53s (± 0.69%) +0.00s (+ 0.04%) 2.50s 2.56s
Total Time 10.59s (± 0.45%) 10.55s (± 0.37%) -0.05s (- 0.43%) 10.47s 10.65s
Monaco - node (v12.1.0, x64)
Memory used 326,913k (± 0.02%) 326,926k (± 0.02%) +13k (+ 0.00%) 326,799k 327,144k
Parse Time 1.58s (± 0.75%) 1.58s (± 0.84%) +0.00s (+ 0.13%) 1.56s 1.62s
Bind Time 0.74s (± 0.80%) 0.75s (± 1.29%) +0.01s (+ 0.81%) 0.74s 0.78s
Check Time 5.82s (± 0.55%) 5.84s (± 0.39%) +0.02s (+ 0.29%) 5.78s 5.88s
Emit Time 3.34s (± 0.73%) 3.32s (± 0.72%) -0.02s (- 0.69%) 3.25s 3.36s
Total Time 11.49s (± 0.37%) 11.49s (± 0.39%) 0.00s ( 0.00%) 11.39s 11.58s
TFS - node (v12.1.0, x64)
Memory used 289,836k (± 0.01%) 289,819k (± 0.02%) -17k (- 0.01%) 289,699k 289,910k
Parse Time 1.30s (± 0.88%) 1.30s (± 1.14%) -0.00s (- 0.23%) 1.27s 1.34s
Bind Time 0.72s (± 0.69%) 0.71s (± 0.87%) -0.01s (- 0.70%) 0.70s 0.72s
Check Time 5.39s (± 0.33%) 5.37s (± 0.19%) -0.02s (- 0.37%) 5.35s 5.39s
Emit Time 3.52s (± 0.75%) 3.53s (± 0.98%) +0.01s (+ 0.20%) 3.42s 3.60s
Total Time 10.93s (± 0.34%) 10.91s (± 0.48%) -0.02s (- 0.21%) 10.74s 11.00s
material-ui - node (v12.1.0, x64)
Memory used 448,555k (± 0.06%) 448,490k (± 0.06%) -65k (- 0.01%) 447,531k 448,876k
Parse Time 1.83s (± 0.33%) 1.82s (± 0.58%) -0.00s (- 0.05%) 1.80s 1.85s
Bind Time 0.68s (± 0.70%) 0.68s (± 0.95%) +0.00s (+ 0.15%) 0.67s 0.70s
Check Time 13.12s (± 0.50%) 13.18s (± 0.67%) +0.06s (+ 0.48%) 12.99s 13.34s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.62s (± 0.41%) 15.68s (± 0.62%) +0.06s (+ 0.39%) 15.47s 15.84s
xstate - node (v12.1.0, x64)
Memory used 544,026k (± 0.01%) 544,054k (± 0.01%) +28k (+ 0.01%) 543,860k 544,197k
Parse Time 2.57s (± 0.55%) 2.55s (± 0.50%) -0.01s (- 0.55%) 2.51s 2.57s
Bind Time 1.03s (± 1.27%) 1.03s (± 0.82%) +0.00s (+ 0.19%) 1.01s 1.05s
Check Time 1.51s (± 0.31%) 1.52s (± 0.41%) +0.01s (+ 0.40%) 1.51s 1.53s
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.17s (± 0.38%) -0.00s (- 0.08%) 5.14s 5.23s
Angular - node (v14.15.1, x64)
Memory used 336,167k (± 0.01%) 336,190k (± 0.01%) +23k (+ 0.01%) 336,128k 336,274k
Parse Time 2.07s (± 0.86%) 2.06s (± 0.54%) -0.01s (- 0.39%) 2.04s 2.09s
Bind Time 0.90s (± 0.55%) 0.90s (± 0.64%) +0.00s (+ 0.45%) 0.89s 0.91s
Check Time 5.85s (± 0.37%) 5.86s (± 0.35%) +0.01s (+ 0.21%) 5.81s 5.90s
Emit Time 6.41s (± 0.55%) 6.44s (± 0.62%) +0.03s (+ 0.47%) 6.31s 6.52s
Total Time 15.23s (± 0.37%) 15.27s (± 0.35%) +0.04s (+ 0.25%) 15.08s 15.33s
Compiler-Unions - node (v14.15.1, x64)
Memory used 191,820k (± 0.02%) 192,067k (± 0.40%) +246k (+ 0.13%) 191,095k 195,089k
Parse Time 0.85s (± 0.56%) 0.86s (± 0.70%) +0.00s (+ 0.23%) 0.84s 0.87s
Bind Time 0.57s (± 1.32%) 0.57s (± 1.17%) -0.00s (- 0.17%) 0.56s 0.59s
Check Time 6.70s (± 0.43%) 6.68s (± 0.49%) -0.01s (- 0.21%) 6.63s 6.77s
Emit Time 2.50s (± 0.68%) 2.48s (± 0.47%) -0.01s (- 0.44%) 2.46s 2.52s
Total Time 10.62s (± 0.34%) 10.60s (± 0.32%) -0.02s (- 0.22%) 10.54s 10.68s
Monaco - node (v14.15.1, x64)
Memory used 325,747k (± 0.01%) 325,732k (± 0.00%) -15k (- 0.00%) 325,706k 325,766k
Parse Time 1.58s (± 0.66%) 1.58s (± 0.47%) -0.00s (- 0.32%) 1.57s 1.60s
Bind Time 0.79s (± 1.04%) 0.78s (± 0.97%) -0.00s (- 0.38%) 0.77s 0.81s
Check Time 5.70s (± 0.51%) 5.69s (± 0.63%) -0.01s (- 0.12%) 5.61s 5.75s
Emit Time 3.37s (± 0.46%) 3.38s (± 0.52%) +0.01s (+ 0.30%) 3.33s 3.42s
Total Time 11.43s (± 0.39%) 11.43s (± 0.37%) -0.00s (- 0.03%) 11.34s 11.53s
TFS - node (v14.15.1, x64)
Memory used 288,876k (± 0.01%) 288,893k (± 0.01%) +17k (+ 0.01%) 288,863k 288,928k
Parse Time 1.33s (± 1.54%) 1.34s (± 1.51%) +0.01s (+ 0.75%) 1.30s 1.39s
Bind Time 0.77s (± 3.61%) 0.75s (± 3.34%) -0.01s (- 1.96%) 0.73s 0.85s
Check Time 5.36s (± 0.58%) 5.35s (± 0.39%) -0.01s (- 0.19%) 5.30s 5.41s
Emit Time 3.56s (± 1.72%) 3.59s (± 1.91%) +0.03s (+ 0.76%) 3.48s 3.78s
Total Time 11.02s (± 0.62%) 11.03s (± 0.72%) +0.01s (+ 0.12%) 10.92s 11.26s
material-ui - node (v14.15.1, x64)
Memory used 446,833k (± 0.01%) 446,806k (± 0.00%) -27k (- 0.01%) 446,769k 446,849k
Parse Time 1.89s (± 0.77%) 1.88s (± 0.69%) -0.00s (- 0.05%) 1.86s 1.92s
Bind Time 0.72s (± 1.26%) 0.72s (± 1.29%) -0.00s (- 0.42%) 0.70s 0.74s
Check Time 13.22s (± 0.73%) 13.12s (± 0.37%) -0.10s (- 0.79%) 13.04s 13.25s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.83s (± 0.60%) 15.72s (± 0.37%) -0.11s (- 0.69%) 15.61s 15.89s
xstate - node (v14.15.1, x64)
Memory used 541,868k (± 0.00%) 541,856k (± 0.00%) -12k (- 0.00%) 541,796k 541,906k
Parse Time 2.61s (± 0.40%) 2.61s (± 0.50%) -0.00s (- 0.04%) 2.59s 2.65s
Bind Time 1.15s (± 0.82%) 1.15s (± 1.38%) +0.01s (+ 0.44%) 1.11s 1.18s
Check Time 1.56s (± 0.45%) 1.56s (± 0.86%) -0.00s (- 0.00%) 1.53s 1.59s
Emit Time 0.07s (± 4.13%) 0.08s (± 4.79%) +0.00s (+ 5.56%) 0.07s 0.08s
Total Time 5.39s (± 0.36%) 5.39s (± 0.48%) -0.00s (- 0.04%) 5.36s 5.49s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-210-generic
Architecturex64
Available Memory16 GB
Available Memory15 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 49736 10
Baseline main 10

TSServer

Comparison Report - main..49736
Metric main 49736 Delta Best Worst
Compiler-UnionsTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 1,461ms (± 0.33%) 1,455ms (± 0.74%) -6ms (- 0.38%) 1,430ms 1,474ms
Req 2 - geterr 3,627ms (± 0.45%) 3,636ms (± 0.52%) +10ms (+ 0.26%) 3,587ms 3,672ms
Req 3 - references 278ms (± 0.56%) 277ms (± 1.37%) -1ms (- 0.47%) 269ms 289ms
Req 4 - navto 233ms (± 0.87%) 234ms (± 0.86%) +1ms (+ 0.34%) 229ms 237ms
Req 5 - completionInfo count 1,355 (± 0.00%) 1,355 (± 0.00%) 0 ( 0.00%) 1,355 1,355
Req 5 - completionInfo 62ms (± 2.93%) 64ms (± 4.03%) +2ms (+ 2.42%) 59ms 70ms
CompilerTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 1,561ms (± 0.36%) 1,566ms (± 0.56%) +5ms (+ 0.35%) 1,551ms 1,589ms
Req 2 - geterr 2,272ms (± 0.58%) 2,275ms (± 0.57%) +3ms (+ 0.12%) 2,234ms 2,296ms
Req 3 - references 298ms (± 0.80%) 302ms (± 3.24%) +5ms (+ 1.55%) 291ms 339ms
Req 4 - navto 238ms (± 2.07%) 240ms (± 1.98%) +2ms (+ 0.63%) 222ms 246ms
Req 5 - completionInfo count 1,517 (± 0.00%) 1,517 (± 0.00%) 0 ( 0.00%) 1,517 1,517
Req 5 - completionInfo 69ms (± 2.01%) 68ms (± 1.74%) -0ms (- 0.44%) 64ms 70ms
xstateTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 2,188ms (± 0.70%) 2,172ms (± 0.36%) -16ms (- 0.71%) 2,157ms 2,187ms
Req 2 - geterr 778ms (± 0.31%) 782ms (± 0.97%) +4ms (+ 0.53%) 771ms 804ms
Req 3 - references 98ms (± 1.53%) 96ms (± 1.76%) -2ms (- 1.53%) 94ms 102ms
Req 4 - navto 257ms (± 0.98%) 255ms (± 0.71%) -2ms (- 0.66%) 251ms 259ms
Req 5 - completionInfo count 3,244 (± 0.00%) 3,244 (± 0.00%) 0 ( 0.00%) 3,244 3,244
Req 5 - completionInfo 273ms (± 1.16%) 272ms (± 1.07%) -1ms (- 0.33%) 265ms 277ms
Compiler-UnionsTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 1,473ms (± 0.73%) 1,472ms (± 0.52%) -1ms (- 0.08%) 1,460ms 1,496ms
Req 2 - geterr 3,391ms (± 0.59%) 3,383ms (± 0.29%) -8ms (- 0.24%) 3,362ms 3,408ms
Req 3 - references 261ms (± 0.91%) 263ms (± 0.87%) +2ms (+ 0.77%) 258ms 267ms
Req 4 - navto 205ms (± 1.46%) 205ms (± 0.75%) +0ms (+ 0.05%) 201ms 208ms
Req 5 - completionInfo count 1,355 (± 0.00%) 1,355 (± 0.00%) 0 ( 0.00%) 1,355 1,355
Req 5 - completionInfo 66ms (±16.85%) 75ms (±14.28%) +9ms (+13.57%) 56ms 100ms
CompilerTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 1,568ms (± 0.54%) 1,569ms (± 0.41%) +1ms (+ 0.04%) 1,555ms 1,586ms
Req 2 - geterr 2,209ms (± 0.37%) 2,213ms (± 0.61%) +4ms (+ 0.19%) 2,186ms 2,244ms
Req 3 - references 273ms (± 0.65%) 274ms (± 0.78%) +1ms (+ 0.18%) 268ms 276ms
Req 4 - navto 213ms (± 0.67%) 215ms (± 0.84%) +2ms (+ 0.94%) 211ms 219ms
Req 5 - completionInfo count 1,517 (± 0.00%) 1,517 (± 0.00%) 0 ( 0.00%) 1,517 1,517
Req 5 - completionInfo 64ms (± 3.06%) 62ms (± 5.06%) 🟩-2ms (- 3.42%) 54ms 66ms
xstateTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 2,103ms (± 0.39%) 2,111ms (± 0.31%) +8ms (+ 0.37%) 2,096ms 2,123ms
Req 2 - geterr 765ms (± 0.66%) 762ms (± 0.54%) -3ms (- 0.44%) 755ms 772ms
Req 3 - references 65ms (± 1.02%) 66ms (± 1.70%) +1ms (+ 1.23%) 64ms 70ms
Req 4 - navto 242ms (± 1.23%) 242ms (± 0.90%) 0ms ( 0.00%) 236ms 247ms
Req 5 - completionInfo count 3,244 (± 0.00%) 3,244 (± 0.00%) 0 ( 0.00%) 3,244 3,244
Req 5 - completionInfo 265ms (± 1.31%) 263ms (± 0.83%) -2ms (- 0.57%) 260ms 269ms
Compiler-UnionsTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 1,526ms (± 0.44%) 1,529ms (± 0.71%) +3ms (+ 0.18%) 1,502ms 1,552ms
Req 2 - geterr 3,545ms (± 0.75%) 3,532ms (± 0.57%) -13ms (- 0.37%) 3,484ms 3,567ms
Req 3 - references 278ms (± 0.63%) 277ms (± 0.90%) -1ms (- 0.47%) 271ms 283ms
Req 4 - navto 219ms (± 0.53%) 218ms (± 0.79%) -1ms (- 0.41%) 216ms 222ms
Req 5 - completionInfo count 1,355 (± 0.00%) 1,355 (± 0.00%) 0 ( 0.00%) 1,355 1,355
Req 5 - completionInfo 56ms (± 4.93%) 55ms (± 0.89%) -1ms (- 1.77%) 55ms 57ms
CompilerTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 1,608ms (± 0.57%) 1,608ms (± 0.77%) -1ms (- 0.04%) 1,587ms 1,640ms
Req 2 - geterr 2,349ms (± 0.52%) 2,341ms (± 0.47%) -8ms (- 0.36%) 2,319ms 2,370ms
Req 3 - references 287ms (± 0.74%) 287ms (± 0.44%) +0ms (+ 0.03%) 285ms 291ms
Req 4 - navto 232ms (± 1.71%) 229ms (± 0.56%) -3ms (- 1.08%) 227ms 232ms
Req 5 - completionInfo count 1,517 (± 0.00%) 1,517 (± 0.00%) 0 ( 0.00%) 1,517 1,517
Req 5 - completionInfo 53ms (± 0.98%) 53ms (± 0.84%) -0ms (- 0.56%) 52ms 54ms
xstateTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 2,256ms (± 0.36%) 2,237ms (± 0.43%) -20ms (- 0.87%) 2,214ms 2,254ms
Req 2 - geterr 787ms (± 0.50%) 781ms (± 0.43%) -6ms (- 0.78%) 777ms 791ms
Req 3 - references 65ms (± 1.61%) 65ms (± 0.72%) -0ms (- 0.46%) 64ms 66ms
Req 4 - navto 250ms (± 0.86%) 251ms (± 0.78%) +0ms (+ 0.12%) 246ms 254ms
Req 5 - completionInfo count 3,244 (± 0.00%) 3,244 (± 0.00%) 0 ( 0.00%) 3,244 3,244
Req 5 - completionInfo 269ms (± 0.79%) 268ms (± 0.41%) -1ms (- 0.30%) 265ms 270ms
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-210-generic
Architecturex64
Available Memory16 GB
Available Memory15 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
  • Compiler-UnionsTSServer - node (v10.16.3, x64)
  • Compiler-UnionsTSServer - node (v12.1.0, x64)
  • Compiler-UnionsTSServer - node (v14.15.1, x64)
  • CompilerTSServer - node (v10.16.3, x64)
  • CompilerTSServer - node (v12.1.0, x64)
  • CompilerTSServer - node (v14.15.1, x64)
  • xstateTSServer - node (v10.16.3, x64)
  • xstateTSServer - node (v12.1.0, x64)
  • xstateTSServer - node (v14.15.1, x64)
Benchmark Name Iterations
Current 49736 10
Baseline main 10

Developer Information:

Download Benchmark

@gabritto gabritto merged commit bdb8514 into main Aug 5, 2022
@gabritto gabritto deleted the gabritto/issue45596 branch August 5, 2022 18:24
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
4 participants