Skip to content

Defer distributing index over generic object types#50540

Merged
ahejlsberg merged 3 commits into
microsoft:mainfrom
Andarist:defer-distribution-index-over-object-type
Sep 1, 2022
Merged

Defer distributing index over generic object types#50540
ahejlsberg merged 3 commits into
microsoft:mainfrom
Andarist:defer-distribution-index-over-object-type

Conversation

@Andarist

Copy link
Copy Markdown
Contributor

Fixes #50539

cc @ahejlsberg , the shouldDeferIndexType check has been introduced based on the changes in this PR: https://github.com/microsoft/TypeScript/pull/49696/files

@DanielRosenwasser

Copy link
Copy Markdown
Member

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

@typescript-bot

typescript-bot commented Aug 30, 2022

Copy link
Copy Markdown
Contributor

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

Update: The results are in!

@typescript-bot

typescript-bot commented Aug 30, 2022

Copy link
Copy Markdown
Contributor

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

@typescript-bot

typescript-bot commented Aug 30, 2022

Copy link
Copy Markdown
Contributor

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

Update: The results are in!

@typescript-bot

typescript-bot commented Aug 30, 2022

Copy link
Copy Markdown
Contributor

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

@typescript-bot

Copy link
Copy Markdown
Contributor

@DanielRosenwasser Here are the results of running the user test suite comparing main and refs/pull/50540/merge:

Everything looks good!

@typescript-bot

Copy link
Copy Markdown
Contributor

Heya @DanielRosenwasser, I've run the RWC suite on this PR - assuming you're on the TS core team, you can view the resulting diff here.

@typescript-bot

Copy link
Copy Markdown
Contributor

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

Here they are:

Compiler

Comparison Report - main..50540
Metric main 50540 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 363,228k (± 0.02%) 363,130k (± 0.02%) -98k (- 0.03%) 362,992k 363,310k
Parse Time 2.09s (± 0.75%) 2.07s (± 0.31%) -0.02s (- 0.91%) 2.06s 2.09s
Bind Time 0.79s (± 0.96%) 0.79s (± 0.63%) 0.00s ( 0.00%) 0.78s 0.80s
Check Time 6.18s (± 0.42%) 6.16s (± 0.57%) -0.03s (- 0.44%) 6.09s 6.24s
Emit Time 6.01s (± 0.62%) 5.99s (± 1.22%) -0.03s (- 0.45%) 5.89s 6.20s
Total Time 15.08s (± 0.34%) 15.00s (± 0.65%) -0.08s (- 0.50%) 14.86s 15.26s
Compiler-Unions - node (v10.16.3, x64)
Memory used 206,077k (± 0.03%) 206,113k (± 0.03%) +36k (+ 0.02%) 205,970k 206,238k
Parse Time 0.83s (± 1.07%) 0.83s (± 1.18%) -0.00s (- 0.36%) 0.81s 0.85s
Bind Time 0.47s (± 1.88%) 0.47s (± 2.12%) -0.01s (- 1.05%) 0.45s 0.49s
Check Time 8.41s (± 0.57%) 8.41s (± 0.54%) -0.01s (- 0.06%) 8.33s 8.49s
Emit Time 2.47s (± 1.10%) 2.48s (± 1.21%) +0.01s (+ 0.41%) 2.41s 2.53s
Total Time 12.19s (± 0.51%) 12.19s (± 0.41%) -0.00s (- 0.00%) 12.07s 12.34s
Monaco - node (v10.16.3, x64)
Memory used 344,700k (± 0.03%) 344,656k (± 0.02%) -45k (- 0.01%) 344,531k 344,775k
Parse Time 1.61s (± 0.59%) 1.60s (± 0.57%) -0.01s (- 0.50%) 1.59s 1.63s
Bind Time 0.70s (± 0.53%) 0.70s (± 0.52%) +0.01s (+ 1.29%) 0.70s 0.71s
Check Time 6.23s (± 0.49%) 6.22s (± 0.50%) -0.01s (- 0.22%) 6.16s 6.29s
Emit Time 3.27s (± 1.04%) 3.26s (± 0.84%) -0.01s (- 0.18%) 3.21s 3.32s
Total Time 11.80s (± 0.38%) 11.78s (± 0.23%) -0.02s (- 0.17%) 11.73s 11.85s
TFS - node (v10.16.3, x64)
Memory used 305,873k (± 0.03%) 305,877k (± 0.02%) +4k (+ 0.00%) 305,732k 306,054k
Parse Time 1.29s (± 0.94%) 1.28s (± 0.65%) -0.00s (- 0.08%) 1.27s 1.31s
Bind Time 0.67s (± 0.86%) 0.67s (± 0.60%) -0.00s (- 0.59%) 0.66s 0.68s
Check Time 5.53s (± 0.49%) 5.51s (± 0.47%) -0.02s (- 0.40%) 5.44s 5.54s
Emit Time 3.40s (± 0.61%) 3.39s (± 1.32%) -0.01s (- 0.26%) 3.31s 3.49s
Total Time 10.89s (± 0.32%) 10.85s (± 0.58%) -0.04s (- 0.35%) 10.69s 10.96s
material-ui - node (v10.16.3, x64)
Memory used 460,758k (± 0.01%) 460,730k (± 0.01%) -29k (- 0.01%) 460,610k 460,819k
Parse Time 1.81s (± 0.64%) 1.83s (± 0.65%) +0.01s (+ 0.77%) 1.80s 1.85s
Bind Time 0.58s (± 1.66%) 0.57s (± 1.76%) -0.01s (- 1.03%) 0.56s 0.60s
Check Time 15.65s (± 0.38%) 15.73s (± 0.87%) +0.08s (+ 0.50%) 15.50s 16.08s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 18.05s (± 0.36%) 18.13s (± 0.76%) +0.08s (+ 0.46%) 17.89s 18.48s
xstate - node (v10.16.3, x64)
Memory used 584,554k (± 0.02%) 587,765k (± 1.24%) +3,211k (+ 0.55%) 584,388k 617,313k
Parse Time 2.59s (± 0.46%) 2.61s (± 0.39%) +0.02s (+ 0.62%) 2.59s 2.63s
Bind Time 0.91s (± 0.65%) 0.92s (± 0.41%) +0.00s (+ 0.11%) 0.91s 0.92s
Check Time 1.62s (± 0.54%) 1.62s (± 0.77%) +0.00s (+ 0.19%) 1.60s 1.65s
Emit Time 0.07s (± 0.00%) 0.07s (± 4.66%) +0.00s (+ 4.29%) 0.07s 0.08s
Total Time 5.20s (± 0.38%) 5.21s (± 0.38%) +0.01s (+ 0.25%) 5.17s 5.25s
Angular - node (v12.1.0, x64)
Memory used 340,722k (± 0.01%) 340,660k (± 0.02%) -62k (- 0.02%) 340,517k 340,790k
Parse Time 2.07s (± 0.39%) 2.09s (± 0.56%) +0.01s (+ 0.63%) 2.06s 2.12s
Bind Time 0.77s (± 0.52%) 0.77s (± 0.75%) +0.00s (+ 0.26%) 0.76s 0.78s
Check Time 5.85s (± 0.87%) 5.82s (± 0.38%) -0.02s (- 0.43%) 5.75s 5.86s
Emit Time 6.19s (± 0.63%) 6.21s (± 0.82%) +0.03s (+ 0.49%) 6.12s 6.34s
Total Time 14.87s (± 0.58%) 14.89s (± 0.42%) +0.02s (+ 0.13%) 14.73s 15.00s
Compiler-Unions - node (v12.1.0, x64)
Memory used 194,052k (± 0.03%) 193,517k (± 0.32%) -535k (- 0.28%) 191,276k 194,194k
Parse Time 0.82s (± 1.01%) 0.82s (± 0.57%) -0.00s (- 0.61%) 0.81s 0.83s
Bind Time 0.47s (± 1.01%) 0.47s (± 0.48%) -0.00s (- 0.85%) 0.46s 0.47s
Check Time 6.65s (± 0.44%) 6.64s (± 0.64%) -0.01s (- 0.15%) 6.55s 6.72s
Emit Time 2.45s (± 1.11%) 2.47s (± 0.83%) +0.01s (+ 0.57%) 2.43s 2.52s
Total Time 10.40s (± 0.43%) 10.39s (± 0.46%) -0.00s (- 0.02%) 10.29s 10.48s
Monaco - node (v12.1.0, x64)
Memory used 327,605k (± 0.06%) 327,666k (± 0.02%) +62k (+ 0.02%) 327,556k 327,844k
Parse Time 1.57s (± 0.71%) 1.57s (± 0.68%) +0.01s (+ 0.38%) 1.55s 1.59s
Bind Time 0.69s (± 0.72%) 0.69s (± 0.86%) -0.00s (- 0.14%) 0.68s 0.71s
Check Time 5.83s (± 0.46%) 5.83s (± 0.51%) +0.00s (+ 0.09%) 5.79s 5.92s
Emit Time 3.31s (± 0.76%) 3.30s (± 1.28%) -0.01s (- 0.24%) 3.24s 3.44s
Total Time 11.40s (± 0.33%) 11.40s (± 0.43%) +0.01s (+ 0.04%) 11.32s 11.53s
TFS - node (v12.1.0, x64)
Memory used 290,506k (± 0.01%) 290,482k (± 0.02%) -24k (- 0.01%) 290,329k 290,610k
Parse Time 1.28s (± 0.64%) 1.29s (± 0.90%) +0.00s (+ 0.16%) 1.26s 1.31s
Bind Time 0.67s (± 0.99%) 0.67s (± 1.05%) -0.00s (- 0.59%) 0.66s 0.69s
Check Time 5.37s (± 0.69%) 5.37s (± 0.54%) +0.01s (+ 0.11%) 5.31s 5.46s
Emit Time 3.48s (± 0.71%) 3.46s (± 0.63%) -0.02s (- 0.55%) 3.43s 3.53s
Total Time 10.81s (± 0.50%) 10.79s (± 0.23%) -0.02s (- 0.15%) 10.74s 10.85s
material-ui - node (v12.1.0, x64)
Memory used 439,760k (± 0.08%) 439,985k (± 0.01%) +225k (+ 0.05%) 439,898k 440,118k
Parse Time 1.81s (± 0.58%) 1.81s (± 0.54%) -0.00s (- 0.11%) 1.79s 1.84s
Bind Time 0.55s (± 0.95%) 0.55s (± 0.73%) +0.00s (+ 0.36%) 0.54s 0.56s
Check Time 12.77s (± 0.90%) 12.72s (± 0.62%) -0.06s (- 0.45%) 12.57s 12.95s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.13s (± 0.79%) 15.08s (± 0.52%) -0.06s (- 0.38%) 14.91s 15.30s
xstate - node (v12.1.0, x64)
Memory used 549,659k (± 0.02%) 552,900k (± 1.30%) +3,241k (+ 0.59%) 549,542k 581,919k
Parse Time 2.53s (± 0.39%) 2.53s (± 0.53%) -0.00s (- 0.04%) 2.51s 2.56s
Bind Time 0.89s (± 0.65%) 0.89s (± 0.65%) +0.00s (+ 0.34%) 0.88s 0.90s
Check Time 1.49s (± 0.65%) 1.50s (± 0.55%) +0.01s (+ 0.40%) 1.48s 1.52s
Emit Time 0.07s (± 3.14%) 0.07s (± 0.00%) -0.00s (- 1.41%) 0.07s 0.07s
Total Time 4.98s (± 0.26%) 4.99s (± 0.30%) +0.00s (+ 0.08%) 4.96s 5.03s
Angular - node (v14.15.1, x64)
Memory used 338,741k (± 0.01%) 338,722k (± 0.01%) -19k (- 0.01%) 338,650k 338,759k
Parse Time 2.06s (± 0.61%) 2.06s (± 0.65%) +0.00s (+ 0.24%) 2.03s 2.08s
Bind Time 0.79s (± 0.51%) 0.79s (± 0.56%) +0.00s (+ 0.38%) 0.78s 0.80s
Check Time 5.81s (± 0.40%) 5.85s (± 0.30%) +0.03s (+ 0.57%) 5.80s 5.88s
Emit Time 6.16s (± 0.56%) 6.20s (± 0.62%) +0.04s (+ 0.68%) 6.13s 6.28s
Total Time 14.82s (± 0.32%) 14.90s (± 0.30%) +0.08s (+ 0.52%) 14.81s 15.03s
Compiler-Unions - node (v14.15.1, x64)
Memory used 192,632k (± 0.01%) 192,634k (± 0.02%) +2k (+ 0.00%) 192,564k 192,703k
Parse Time 0.85s (± 0.55%) 0.85s (± 0.68%) -0.00s (- 0.00%) 0.84s 0.86s
Bind Time 0.49s (± 0.98%) 0.49s (± 1.01%) -0.00s (- 0.21%) 0.48s 0.50s
Check Time 6.64s (± 0.42%) 6.66s (± 0.37%) +0.02s (+ 0.32%) 6.62s 6.70s
Emit Time 2.41s (± 0.89%) 2.41s (± 0.65%) 0.00s ( 0.00%) 2.37s 2.44s
Total Time 10.38s (± 0.44%) 10.40s (± 0.32%) +0.02s (+ 0.17%) 10.31s 10.47s
Monaco - node (v14.15.1, x64)
Memory used 326,514k (± 0.00%) 326,533k (± 0.01%) +19k (+ 0.01%) 326,482k 326,598k
Parse Time 1.56s (± 0.53%) 1.57s (± 0.60%) +0.01s (+ 0.38%) 1.55s 1.59s
Bind Time 0.72s (± 0.69%) 0.72s (± 0.77%) -0.01s (- 0.97%) 0.71s 0.73s
Check Time 5.71s (± 0.35%) 5.71s (± 0.40%) -0.00s (- 0.02%) 5.66s 5.76s
Emit Time 3.32s (± 1.35%) 3.30s (± 0.51%) -0.02s (- 0.60%) 3.26s 3.35s
Total Time 11.32s (± 0.37%) 11.30s (± 0.26%) -0.02s (- 0.20%) 11.24s 11.35s
TFS - node (v14.15.1, x64)
Memory used 289,629k (± 0.01%) 289,645k (± 0.01%) +15k (+ 0.01%) 289,604k 289,672k
Parse Time 1.29s (± 0.52%) 1.30s (± 0.56%) +0.00s (+ 0.39%) 1.28s 1.31s
Bind Time 0.79s (± 0.59%) 0.78s (± 1.46%) -0.01s (- 1.01%) 0.74s 0.80s
Check Time 5.33s (± 0.31%) 5.33s (± 0.30%) -0.00s (- 0.02%) 5.30s 5.37s
Emit Time 3.55s (± 0.69%) 3.59s (± 0.62%) +0.04s (+ 0.99%) 3.54s 3.64s
Total Time 10.97s (± 0.26%) 11.00s (± 0.23%) +0.03s (+ 0.25%) 10.94s 11.04s
material-ui - node (v14.15.1, x64)
Memory used 438,194k (± 0.00%) 438,095k (± 0.06%) -99k (- 0.02%) 437,042k 438,266k
Parse Time 1.86s (± 0.45%) 1.86s (± 0.80%) +0.01s (+ 0.27%) 1.83s 1.90s
Bind Time 0.58s (± 0.77%) 0.58s (± 0.69%) +0.00s (+ 0.17%) 0.57s 0.59s
Check Time 12.83s (± 0.66%) 12.86s (± 0.96%) +0.03s (+ 0.22%) 12.69s 13.30s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.28s (± 0.53%) 15.31s (± 0.89%) +0.03s (+ 0.21%) 15.11s 15.79s
xstate - node (v14.15.1, x64)
Memory used 547,398k (± 0.00%) 547,406k (± 0.00%) +8k (+ 0.00%) 547,374k 547,429k
Parse Time 2.60s (± 0.56%) 2.59s (± 0.56%) -0.00s (- 0.04%) 2.57s 2.63s
Bind Time 0.97s (± 0.87%) 0.97s (± 2.04%) +0.00s (+ 0.21%) 0.96s 1.05s
Check Time 1.53s (± 0.67%) 1.53s (± 0.38%) +0.00s (+ 0.13%) 1.52s 1.54s
Emit Time 0.07s (± 4.66%) 0.07s (± 0.00%) 🟩-0.00s (- 4.11%) 0.07s 0.07s
Total Time 5.17s (± 0.42%) 5.18s (± 0.64%) +0.00s (+ 0.08%) 5.13s 5.30s
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 50540 10
Baseline main 10

TSServer

Comparison Report - main..50540
Metric main 50540 Delta Best Worst
Compiler-UnionsTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 1,405ms (± 0.42%) 1,399ms (± 0.55%) -7ms (- 0.48%) 1,379ms 1,414ms
Req 2 - geterr 4,131ms (± 0.75%) 4,093ms (± 0.80%) -38ms (- 0.93%) 4,032ms 4,171ms
Req 3 - references 232ms (± 0.71%) 230ms (± 0.98%) -2ms (- 0.91%) 226ms 236ms
Req 4 - navto 172ms (± 0.93%) 171ms (± 0.85%) -2ms (- 1.04%) 168ms 174ms
Req 5 - completionInfo count 1,356 (± 0.00%) 1,356 (± 0.00%) 0 ( 0.00%) 1,356 1,356
Req 5 - completionInfo 95ms (± 2.89%) 95ms (± 3.07%) -0ms (- 0.42%) 88ms 100ms
CompilerTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 1,496ms (± 0.53%) 1,501ms (± 0.47%) +4ms (+ 0.29%) 1,479ms 1,515ms
Req 2 - geterr 2,249ms (± 0.37%) 2,257ms (± 0.47%) +7ms (+ 0.32%) 2,239ms 2,278ms
Req 3 - references 242ms (± 0.61%) 241ms (± 0.47%) -1ms (- 0.25%) 238ms 243ms
Req 4 - navto 184ms (± 0.63%) 186ms (± 0.79%) +1ms (+ 0.60%) 182ms 189ms
Req 5 - completionInfo count 1,518 (± 0.00%) 1,518 (± 0.00%) 0 ( 0.00%) 1,518 1,518
Req 5 - completionInfo 69ms (± 1.37%) 69ms (± 2.33%) -0ms (- 0.15%) 64ms 72ms
xstateTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 2,079ms (± 0.41%) 2,085ms (± 0.44%) +5ms (+ 0.25%) 2,061ms 2,097ms
Req 2 - geterr 804ms (± 0.52%) 799ms (± 0.87%) -5ms (- 0.65%) 784ms 813ms
Req 3 - references 100ms (± 1.17%) 101ms (± 1.08%) +1ms (+ 1.31%) 99ms 104ms
Req 4 - navto 235ms (± 1.62%) 232ms (± 0.68%) -3ms (- 1.28%) 226ms 234ms
Req 5 - completionInfo count 3,301 (± 0.00%) 3,301 (± 0.00%) 0 ( 0.00%) 3,301 3,301
Req 5 - completionInfo 280ms (± 0.99%) 279ms (± 0.90%) -1ms (- 0.50%) 274ms 284ms
Compiler-UnionsTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 1,404ms (± 0.44%) 1,407ms (± 0.38%) +3ms (+ 0.18%) 1,393ms 1,419ms
Req 2 - geterr 3,358ms (± 0.54%) 3,367ms (± 0.52%) +9ms (+ 0.27%) 3,336ms 3,416ms
Req 3 - references 221ms (± 0.95%) 221ms (± 1.20%) -1ms (- 0.32%) 214ms 227ms
Req 4 - navto 160ms (± 1.25%) 161ms (± 0.83%) +1ms (+ 0.56%) 158ms 163ms
Req 5 - completionInfo count 1,356 (± 0.00%) 1,356 (± 0.00%) 0 ( 0.00%) 1,356 1,356
Req 5 - completionInfo 62ms (± 5.76%) 63ms (± 4.79%) +1ms (+ 2.11%) 55ms 67ms
CompilerTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 1,490ms (± 0.44%) 1,491ms (± 0.62%) +1ms (+ 0.06%) 1,472ms 1,511ms
Req 2 - geterr 2,170ms (± 0.46%) 2,160ms (± 0.35%) -10ms (- 0.46%) 2,147ms 2,179ms
Req 3 - references 232ms (± 0.40%) 232ms (± 0.88%) +0ms (+ 0.04%) 228ms 237ms
Req 4 - navto 169ms (± 0.59%) 172ms (± 1.31%) +3ms (+ 1.71%) 167ms 177ms
Req 5 - completionInfo count 1,518 (± 0.00%) 1,518 (± 0.00%) 0 ( 0.00%) 1,518 1,518
Req 5 - completionInfo 65ms (± 3.11%) 62ms (± 4.64%) 🟩-3ms (- 4.32%) 57ms 67ms
xstateTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 2,035ms (± 0.50%) 2,024ms (± 0.53%) -10ms (- 0.50%) 2,003ms 2,054ms
Req 2 - geterr 750ms (± 0.47%) 751ms (± 0.53%) +1ms (+ 0.07%) 741ms 762ms
Req 3 - references 67ms (± 1.25%) 67ms (± 1.39%) +0ms (+ 0.45%) 65ms 69ms
Req 4 - navto 223ms (± 1.54%) 222ms (± 1.34%) -1ms (- 0.31%) 212ms 229ms
Req 5 - completionInfo count 3,301 (± 0.00%) 3,301 (± 0.00%) 0 ( 0.00%) 3,301 3,301
Req 5 - completionInfo 273ms (± 1.21%) 276ms (± 0.61%) +3ms (+ 1.03%) 273ms 280ms
Compiler-UnionsTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 1,449ms (± 0.60%) 1,446ms (± 0.75%) -3ms (- 0.21%) 1,424ms 1,476ms
Req 2 - geterr 3,470ms (± 0.72%) 3,485ms (± 0.64%) +16ms (+ 0.46%) 3,438ms 3,549ms
Req 3 - references 229ms (± 0.74%) 230ms (± 0.48%) +1ms (+ 0.44%) 228ms 233ms
Req 4 - navto 169ms (± 0.74%) 169ms (± 0.45%) +0ms (+ 0.06%) 167ms 170ms
Req 5 - completionInfo count 1,356 (± 0.00%) 1,356 (± 0.00%) 0 ( 0.00%) 1,356 1,356
Req 5 - completionInfo 56ms (± 4.41%) 56ms (± 1.10%) -0ms (- 0.53%) 55ms 57ms
CompilerTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 1,516ms (± 0.60%) 1,514ms (± 0.78%) -2ms (- 0.11%) 1,497ms 1,554ms
Req 2 - geterr 2,297ms (± 0.46%) 2,291ms (± 0.40%) -6ms (- 0.27%) 2,276ms 2,313ms
Req 3 - references 242ms (± 0.71%) 241ms (± 0.48%) -1ms (- 0.58%) 238ms 243ms
Req 4 - navto 178ms (± 0.70%) 177ms (± 0.46%) -1ms (- 0.73%) 174ms 178ms
Req 5 - completionInfo count 1,518 (± 0.00%) 1,518 (± 0.00%) 0 ( 0.00%) 1,518 1,518
Req 5 - completionInfo 54ms (± 1.03%) 55ms (± 1.25%) +0ms (+ 0.74%) 53ms 56ms
xstateTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 2,134ms (± 0.74%) 2,129ms (± 0.81%) -5ms (- 0.25%) 2,102ms 2,172ms
Req 2 - geterr 768ms (± 0.52%) 769ms (± 0.41%) +1ms (+ 0.17%) 762ms 776ms
Req 3 - references 66ms (± 1.17%) 66ms (± 1.88%) -0ms (- 0.15%) 63ms 68ms
Req 4 - navto 227ms (± 0.69%) 227ms (± 0.33%) 0ms ( 0.00%) 226ms 229ms
Req 5 - completionInfo count 3,301 (± 0.00%) 3,301 (± 0.00%) 0 ( 0.00%) 3,301 3,301
Req 5 - completionInfo 278ms (± 0.68%) 278ms (± 0.74%) -0ms (- 0.07%) 272ms 282ms
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 50540 10
Baseline main 10

Developer Information:

Download Benchmark

@DanielRosenwasser

Copy link
Copy Markdown
Member

@typescript-bot test top100

@typescript-bot

typescript-bot commented Aug 30, 2022

Copy link
Copy Markdown
Contributor

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

@ahejlsberg

Copy link
Copy Markdown
Member

@DanielRosenwasser @sandersn Looks like the top100 test is bombing out in one of the processes. Same issue over in #50535.

@ahejlsberg ahejlsberg left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This change makes sense, but I'd prefer reducing the scope a bit as suggested here.

Comment thread src/compiler/checker.ts Outdated
Comment on lines +15906 to +15908
if (shouldDeferIndexType(objectType)) {
return;
}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Remove this.

Comment thread src/compiler/checker.ts
}
// (T | U)[K] -> T[K] | U[K] (reading)
// (T | U)[K] -> T[K] & U[K] (writing)
// (T & U)[K] -> T[K] & U[K]

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Change the following line to:

if (objectType.flags & TypeFlags.Union || objectType.Flags & TypeFlags.Intersection && !shouldDeferIndexType(objectType)) ...

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'm concerned that shouldDeferIndexType will also do (possibly expensive) work for union types, so I'd prefer only deferring for intersection types.

@Andarist Andarist requested a review from ahejlsberg August 31, 2022 05:51
@typescript-bot typescript-bot added For Milestone Bug PRs that fix a bug with a specific milestone and removed For Uncommitted Bug PR for untriaged, rejected, closed or missing bug labels Aug 31, 2022
@Andarist

Copy link
Copy Markdown
Contributor Author

@ahejlsberg I've applied the suggested change and rerun the test suite locally - everything looks OK on this front, somebody from the TS team has to start new perf tests though.

@jakebailey

Copy link
Copy Markdown
Member

@typescript-bot perf test this my liege