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

Wrap native map to work around 2**24 element limit #50310

Open
wants to merge 8 commits into
base: main
Choose a base branch
from

Conversation

weswigham
Copy link
Member

Technically this fixes the crash in #50290, though not the underlying change causing us to make 16M more comparisons (and accompanying worse perf).

@typescript-bot typescript-bot added Author: Team For Uncommitted Bug PR for untriaged, rejected, closed or missing bug labels Aug 15, 2022
@weswigham
Copy link
Member Author

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Aug 15, 2022

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

Compiler

Comparison Report - main..50310
Metric main 50310 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 360,805k (± 0.01%) 360,726k (± 0.01%) -78k (- 0.02%) 360,629k 360,846k
Parse Time 2.10s (± 0.55%) 2.09s (± 0.68%) -0.01s (- 0.52%) 2.07s 2.12s
Bind Time 0.89s (± 0.83%) 0.90s (± 1.47%) +0.01s (+ 0.90%) 0.87s 0.94s
Check Time 6.03s (± 0.54%) 6.03s (± 0.45%) +0.00s (+ 0.00%) 5.99s 6.11s
Emit Time 6.16s (± 0.60%) 6.17s (± 0.87%) +0.01s (+ 0.10%) 6.07s 6.28s
Total Time 15.18s (± 0.38%) 15.19s (± 0.52%) +0.01s (+ 0.03%) 15.08s 15.40s
Compiler-Unions - node (v10.16.3, x64)
Memory used 205,538k (± 0.03%) 205,519k (± 0.06%) -20k (- 0.01%) 205,141k 205,721k
Parse Time 0.83s (± 0.78%) 0.83s (± 1.39%) -0.01s (- 0.60%) 0.81s 0.85s
Bind Time 0.53s (± 1.63%) 0.53s (± 0.84%) -0.00s (- 0.75%) 0.52s 0.54s
Check Time 7.13s (± 0.80%) 7.10s (± 0.72%) -0.02s (- 0.32%) 6.99s 7.19s
Emit Time 2.52s (± 1.07%) 2.50s (± 0.92%) -0.02s (- 0.60%) 2.45s 2.56s
Total Time 11.00s (± 0.63%) 10.96s (± 0.54%) -0.04s (- 0.39%) 10.85s 11.11s
Monaco - node (v10.16.3, x64)
Memory used 344,018k (± 0.02%) 344,036k (± 0.02%) +18k (+ 0.01%) 343,917k 344,157k
Parse Time 1.59s (± 0.84%) 1.60s (± 0.31%) +0.01s (+ 0.57%) 1.58s 1.60s
Bind Time 0.75s (± 0.89%) 0.75s (± 0.53%) +0.00s (+ 0.13%) 0.74s 0.76s
Check Time 5.99s (± 0.57%) 6.00s (± 0.30%) +0.01s (+ 0.23%) 5.97s 6.04s
Emit Time 3.26s (± 0.89%) 3.26s (± 0.76%) +0.00s (+ 0.06%) 3.19s 3.30s
Total Time 11.59s (± 0.58%) 11.61s (± 0.30%) +0.02s (+ 0.21%) 11.51s 11.69s
TFS - node (v10.16.3, x64)
Memory used 305,283k (± 0.01%) 305,271k (± 0.02%) -12k (- 0.00%) 305,094k 305,340k
Parse Time 1.29s (± 0.35%) 1.28s (± 0.35%) -0.01s (- 0.47%) 1.27s 1.29s
Bind Time 0.72s (± 0.55%) 0.72s (± 0.55%) 0.00s ( 0.00%) 0.71s 0.73s
Check Time 5.44s (± 0.83%) 5.45s (± 0.49%) +0.01s (+ 0.20%) 5.42s 5.53s
Emit Time 3.42s (± 0.79%) 3.42s (± 0.62%) +0.01s (+ 0.26%) 3.36s 3.47s
Total Time 10.87s (± 0.57%) 10.88s (± 0.21%) +0.01s (+ 0.13%) 10.85s 10.95s
material-ui - node (v10.16.3, x64)
Memory used 471,670k (± 0.01%) 471,698k (± 0.01%) +28k (+ 0.01%) 471,576k 471,803k
Parse Time 1.82s (± 0.52%) 1.83s (± 0.54%) +0.01s (+ 0.27%) 1.81s 1.85s
Bind Time 0.69s (± 1.27%) 0.68s (± 1.62%) -0.01s (- 1.45%) 0.66s 0.70s
Check Time 14.45s (± 0.34%) 14.49s (± 0.46%) +0.03s (+ 0.24%) 14.37s 14.66s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 16.97s (± 0.32%) 17.00s (± 0.43%) +0.03s (+ 0.18%) 16.88s 17.20s
xstate - node (v10.16.3, x64)
Memory used 578,867k (± 0.02%) 578,866k (± 0.01%) -1k (- 0.00%) 578,705k 579,000k
Parse Time 2.60s (± 0.44%) 2.59s (± 0.43%) -0.01s (- 0.50%) 2.56s 2.61s
Bind Time 1.04s (± 0.93%) 1.04s (± 0.83%) -0.00s (- 0.10%) 1.01s 1.05s
Check Time 1.57s (± 1.03%) 1.56s (± 0.55%) -0.01s (- 0.64%) 1.54s 1.58s
Emit Time 0.07s (± 4.13%) 0.07s (± 3.14%) -0.00s (- 1.39%) 0.07s 0.08s
Total Time 5.28s (± 0.41%) 5.25s (± 0.21%) -0.03s (- 0.49%) 5.23s 5.27s
Angular - node (v12.1.0, x64)
Memory used 338,255k (± 0.02%) 338,292k (± 0.03%) +37k (+ 0.01%) 338,069k 338,560k
Parse Time 2.09s (± 0.50%) 2.09s (± 0.89%) -0.00s (- 0.05%) 2.06s 2.14s
Bind Time 0.84s (± 0.59%) 0.85s (± 0.61%) +0.01s (+ 0.71%) 0.84s 0.86s
Check Time 5.81s (± 0.56%) 5.80s (± 0.56%) -0.01s (- 0.12%) 5.75s 5.87s
Emit Time 6.33s (± 0.55%) 6.37s (± 0.80%) +0.04s (+ 0.68%) 6.25s 6.45s
Total Time 15.07s (± 0.39%) 15.11s (± 0.30%) +0.04s (+ 0.27%) 15.00s 15.21s
Compiler-Unions - node (v12.1.0, x64)
Memory used 192,958k (± 0.32%) 193,295k (± 0.04%) +336k (+ 0.17%) 193,074k 193,414k
Parse Time 0.82s (± 0.68%) 0.82s (± 1.35%) +0.01s (+ 0.86%) 0.80s 0.85s
Bind Time 0.55s (± 1.10%) 0.55s (± 0.67%) +0.00s (+ 0.18%) 0.54s 0.55s
Check Time 6.63s (± 0.40%) 6.64s (± 0.17%) +0.01s (+ 0.20%) 6.61s 6.67s
Emit Time 2.53s (± 0.65%) 2.51s (± 0.79%) -0.02s (- 0.75%) 2.47s 2.56s
Total Time 10.52s (± 0.22%) 10.52s (± 0.18%) +0.00s (+ 0.04%) 10.48s 10.56s
Monaco - node (v12.1.0, x64)
Memory used 326,897k (± 0.02%) 327,049k (± 0.01%) +152k (+ 0.05%) 326,946k 327,161k
Parse Time 1.57s (± 0.86%) 1.56s (± 0.61%) -0.00s (- 0.06%) 1.54s 1.58s
Bind Time 0.74s (± 0.75%) 0.73s (± 0.67%) -0.00s (- 0.54%) 0.72s 0.74s
Check Time 5.79s (± 0.34%) 5.79s (± 0.26%) -0.00s (- 0.05%) 5.74s 5.81s
Emit Time 3.29s (± 0.73%) 3.30s (± 0.72%) +0.01s (+ 0.43%) 3.25s 3.34s
Total Time 11.38s (± 0.32%) 11.39s (± 0.27%) +0.01s (+ 0.05%) 11.34s 11.46s
TFS - node (v12.1.0, x64)
Memory used 289,847k (± 0.02%) 289,811k (± 0.07%) -37k (- 0.01%) 289,002k 290,076k
Parse Time 1.29s (± 0.67%) 1.29s (± 0.73%) +0.01s (+ 0.39%) 1.27s 1.32s
Bind Time 0.72s (± 0.72%) 0.71s (± 0.56%) -0.01s (- 1.11%) 0.70s 0.72s
Check Time 5.36s (± 0.30%) 5.38s (± 0.52%) +0.02s (+ 0.32%) 5.33s 5.47s
Emit Time 3.54s (± 0.66%) 3.52s (± 1.14%) -0.01s (- 0.37%) 3.45s 3.66s
Total Time 10.90s (± 0.23%) 10.91s (± 0.62%) +0.01s (+ 0.06%) 10.78s 11.14s
material-ui - node (v12.1.0, x64)
Memory used 450,736k (± 0.01%) 450,580k (± 0.06%) -155k (- 0.03%) 449,516k 450,791k
Parse Time 1.82s (± 0.54%) 1.82s (± 0.41%) -0.00s (- 0.11%) 1.80s 1.83s
Bind Time 0.68s (± 0.74%) 0.67s (± 0.44%) -0.00s (- 0.44%) 0.67s 0.68s
Check Time 12.99s (± 0.59%) 12.96s (± 0.41%) -0.03s (- 0.24%) 12.86s 13.14s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.48s (± 0.51%) 15.45s (± 0.37%) -0.04s (- 0.24%) 15.33s 15.64s
xstate - node (v12.1.0, x64)
Memory used 544,194k (± 0.01%) 547,519k (± 1.32%) +3,325k (+ 0.61%) 544,141k 576,618k
Parse Time 2.53s (± 0.49%) 2.53s (± 0.53%) +0.01s (+ 0.28%) 2.51s 2.58s
Bind Time 1.04s (± 0.74%) 1.03s (± 0.56%) -0.01s (- 0.48%) 1.02s 1.04s
Check Time 1.50s (± 0.40%) 1.51s (± 0.41%) +0.00s (+ 0.27%) 1.50s 1.52s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 5.13s (± 0.38%) 5.14s (± 0.38%) +0.01s (+ 0.16%) 5.09s 5.19s
Angular - node (v14.15.1, x64)
Memory used 336,495k (± 0.01%) 336,504k (± 0.01%) +9k (+ 0.00%) 336,437k 336,597k
Parse Time 2.08s (± 0.66%) 2.06s (± 0.46%) -0.02s (- 1.01%) 2.04s 2.08s
Bind Time 0.89s (± 0.65%) 0.90s (± 0.41%) +0.01s (+ 0.67%) 0.89s 0.90s
Check Time 5.83s (± 0.40%) 5.83s (± 0.46%) +0.01s (+ 0.09%) 5.79s 5.92s
Emit Time 6.38s (± 0.47%) 6.36s (± 0.44%) -0.01s (- 0.19%) 6.29s 6.43s
Total Time 15.17s (± 0.31%) 15.15s (± 0.34%) -0.02s (- 0.14%) 15.05s 15.28s
Compiler-Unions - node (v14.15.1, x64)
Memory used 192,150k (± 0.38%) 191,822k (± 0.01%) -328k (- 0.17%) 191,763k 191,880k
Parse Time 0.85s (± 0.78%) 0.85s (± 0.82%) +0.00s (+ 0.12%) 0.84s 0.87s
Bind Time 0.58s (± 0.90%) 0.57s (± 0.87%) -0.00s (- 0.69%) 0.57s 0.59s
Check Time 6.69s (± 0.65%) 6.70s (± 0.41%) +0.01s (+ 0.16%) 6.65s 6.77s
Emit Time 2.50s (± 0.88%) 2.48s (± 0.82%) -0.02s (- 0.88%) 2.44s 2.52s
Total Time 10.62s (± 0.44%) 10.61s (± 0.31%) -0.01s (- 0.10%) 10.54s 10.68s
Monaco - node (v14.15.1, x64)
Memory used 325,769k (± 0.01%) 325,793k (± 0.01%) +24k (+ 0.01%) 325,748k 325,851k
Parse Time 1.57s (± 0.73%) 1.57s (± 0.48%) -0.00s (- 0.13%) 1.55s 1.59s
Bind Time 0.78s (± 0.94%) 0.78s (± 0.75%) -0.00s (- 0.13%) 0.76s 0.79s
Check Time 5.69s (± 0.37%) 5.69s (± 0.46%) +0.00s (+ 0.05%) 5.63s 5.76s
Emit Time 3.33s (± 0.55%) 3.33s (± 0.47%) 0.00s ( 0.00%) 3.31s 3.37s
Total Time 11.37s (± 0.33%) 11.37s (± 0.29%) -0.00s (- 0.04%) 11.30s 11.43s
TFS - node (v14.15.1, x64)
Memory used 288,894k (± 0.00%) 288,910k (± 0.01%) +16k (+ 0.01%) 288,841k 288,961k
Parse Time 1.34s (± 2.04%) 1.32s (± 2.26%) -0.02s (- 1.34%) 1.28s 1.43s
Bind Time 0.76s (± 4.19%) 0.78s (± 5.08%) +0.03s (+ 3.70%) 0.72s 0.86s
Check Time 5.36s (± 0.58%) 5.34s (± 0.43%) -0.02s (- 0.43%) 5.30s 5.40s
Emit Time 3.59s (± 1.89%) 3.62s (± 1.70%) +0.03s (+ 0.81%) 3.46s 3.71s
Total Time 11.06s (± 0.78%) 11.08s (± 0.69%) +0.02s (+ 0.15%) 10.88s 11.24s
material-ui - node (v14.15.1, x64)
Memory used 448,951k (± 0.01%) 448,969k (± 0.01%) +18k (+ 0.00%) 448,925k 449,054k
Parse Time 1.87s (± 0.44%) 1.87s (± 0.69%) -0.00s (- 0.05%) 1.86s 1.92s
Bind Time 0.72s (± 0.72%) 0.72s (± 0.66%) +0.00s (+ 0.56%) 0.71s 0.73s
Check Time 13.13s (± 0.46%) 13.10s (± 0.37%) -0.04s (- 0.27%) 12.96s 13.21s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.73s (± 0.38%) 15.69s (± 0.33%) -0.04s (- 0.24%) 15.55s 15.82s
xstate - node (v14.15.1, x64)
Memory used 542,051k (± 0.01%) 542,104k (± 0.00%) +53k (+ 0.01%) 542,061k 542,170k
Parse Time 2.59s (± 0.32%) 2.60s (± 0.29%) +0.00s (+ 0.12%) 2.58s 2.61s
Bind Time 1.15s (± 1.00%) 1.15s (± 0.77%) +0.00s (+ 0.35%) 1.13s 1.17s
Check Time 1.56s (± 0.61%) 1.55s (± 0.57%) -0.00s (- 0.26%) 1.54s 1.58s
Emit Time 0.07s (± 4.13%) 0.08s (± 4.79%) +0.00s (+ 5.56%) 0.07s 0.08s
Total Time 5.37s (± 0.35%) 5.37s (± 0.16%) -0.00s (- 0.02%) 5.35s 5.39s
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 50310 10
Baseline main 10

TSServer

Comparison Report - main..50310
Metric main 50310 Delta Best Worst
Compiler-UnionsTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 1,458ms (± 0.68%) 1,447ms (± 0.20%) -11ms (- 0.77%) 1,441ms 1,455ms
Req 2 - geterr 3,628ms (± 0.46%) 3,609ms (± 0.37%) -19ms (- 0.53%) 3,587ms 3,639ms
Req 3 - references 281ms (± 1.98%) 274ms (± 0.53%) -7ms (- 2.56%) 270ms 276ms
Req 4 - navto 232ms (± 1.34%) 234ms (± 0.87%) +2ms (+ 1.04%) 230ms 238ms
Req 5 - completionInfo count 1,355 (± 0.00%) 1,355 (± 0.00%) 0 ( 0.00%) 1,355 1,355
Req 5 - completionInfo 62ms (± 3.22%) 63ms (± 2.96%) +1ms (+ 1.29%) 60ms 68ms
CompilerTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 1,556ms (± 0.53%) 1,552ms (± 0.54%) -4ms (- 0.28%) 1,537ms 1,570ms
Req 2 - geterr 2,276ms (± 0.37%) 2,258ms (± 0.41%) -18ms (- 0.78%) 2,237ms 2,277ms
Req 3 - references 297ms (± 1.41%) 298ms (± 2.50%) +1ms (+ 0.30%) 291ms 326ms
Req 4 - navto 236ms (± 2.23%) 235ms (± 1.77%) -1ms (- 0.42%) 225ms 241ms
Req 5 - completionInfo count 1,517 (± 0.00%) 1,517 (± 0.00%) 0 ( 0.00%) 1,517 1,517
Req 5 - completionInfo 68ms (± 2.39%) 68ms (± 1.36%) +0ms (+ 0.29%) 65ms 70ms
xstateTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 2,178ms (± 0.68%) 2,171ms (± 0.28%) -7ms (- 0.33%) 2,161ms 2,192ms
Req 2 - geterr 775ms (± 0.54%) 777ms (± 0.48%) +2ms (+ 0.19%) 770ms 789ms
Req 3 - references 95ms (± 1.22%) 96ms (± 1.48%) +0ms (+ 0.21%) 93ms 99ms
Req 4 - navto 255ms (± 0.86%) 255ms (± 1.10%) +0ms (+ 0.04%) 252ms 262ms
Req 5 - completionInfo count 3,244 (± 0.00%) 3,244 (± 0.00%) 0 ( 0.00%) 3,244 3,244
Req 5 - completionInfo 275ms (± 0.87%) 273ms (± 1.34%) -2ms (- 0.73%) 263ms 281ms
Compiler-UnionsTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 1,488ms (± 0.44%) 1,483ms (± 0.67%) -5ms (- 0.32%) 1,459ms 1,502ms
Req 2 - geterr 3,394ms (± 0.51%) 3,383ms (± 0.55%) -11ms (- 0.33%) 3,349ms 3,441ms
Req 3 - references 261ms (± 0.70%) 262ms (± 0.77%) +1ms (+ 0.19%) 259ms 268ms
Req 4 - navto 205ms (± 1.23%) 203ms (± 0.70%) -3ms (- 1.36%) 200ms 207ms
Req 5 - completionInfo count 1,355 (± 0.00%) 1,355 (± 0.00%) 0 ( 0.00%) 1,355 1,355
Req 5 - completionInfo 73ms (±13.65%) 73ms (±16.83%) +0ms (+ 0.27%) 55ms 99ms
CompilerTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 1,557ms (± 0.47%) 1,562ms (± 0.66%) +5ms (+ 0.33%) 1,539ms 1,584ms
Req 2 - geterr 2,195ms (± 0.48%) 2,201ms (± 0.48%) +5ms (+ 0.23%) 2,182ms 2,227ms
Req 3 - references 271ms (± 0.51%) 272ms (± 0.78%) +1ms (+ 0.52%) 268ms 276ms
Req 4 - navto 214ms (± 1.03%) 213ms (± 0.70%) -1ms (- 0.23%) 210ms 216ms
Req 5 - completionInfo count 1,517 (± 0.00%) 1,517 (± 0.00%) 0 ( 0.00%) 1,517 1,517
Req 5 - completionInfo 60ms (± 4.41%) 63ms (± 4.40%) +3ms (+ 4.15%) 55ms 66ms
xstateTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 2,098ms (± 0.42%) 2,098ms (± 0.56%) -0ms (- 0.01%) 2,079ms 2,130ms
Req 2 - geterr 762ms (± 0.46%) 761ms (± 0.33%) -1ms (- 0.18%) 756ms 766ms
Req 3 - references 65ms (± 1.14%) 65ms (± 2.12%) -0ms (- 0.46%) 62ms 68ms
Req 4 - navto 238ms (± 1.63%) 240ms (± 1.07%) +1ms (+ 0.55%) 231ms 243ms
Req 5 - completionInfo count 3,244 (± 0.00%) 3,244 (± 0.00%) 0 ( 0.00%) 3,244 3,244
Req 5 - completionInfo 265ms (± 1.11%) 263ms (± 0.88%) -1ms (- 0.53%) 259ms 271ms
Compiler-UnionsTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 1,538ms (± 0.54%) 1,524ms (± 0.28%) -14ms (- 0.88%) 1,514ms 1,531ms
Req 2 - geterr 3,531ms (± 0.80%) 3,544ms (± 0.59%) +13ms (+ 0.36%) 3,510ms 3,592ms
Req 3 - references 274ms (± 1.20%) 277ms (± 1.96%) +3ms (+ 1.09%) 272ms 299ms
Req 4 - navto 217ms (± 0.63%) 217ms (± 0.30%) -0ms (- 0.18%) 215ms 218ms
Req 5 - completionInfo count 1,355 (± 0.00%) 1,355 (± 0.00%) 0 ( 0.00%) 1,355 1,355
Req 5 - completionInfo 58ms (± 6.45%) 55ms (± 1.99%) 🟩-4ms (- 6.00%) 54ms 59ms
CompilerTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 1,602ms (± 0.47%) 1,602ms (± 0.66%) 0ms ( 0.00%) 1,583ms 1,634ms
Req 2 - geterr 2,336ms (± 0.67%) 2,344ms (± 0.33%) +9ms (+ 0.38%) 2,331ms 2,366ms
Req 3 - references 286ms (± 0.49%) 287ms (± 0.97%) +1ms (+ 0.45%) 284ms 297ms
Req 4 - navto 232ms (± 2.50%) 230ms (± 1.90%) -2ms (- 0.69%) 225ms 247ms
Req 5 - completionInfo count 1,517 (± 0.00%) 1,517 (± 0.00%) 0 ( 0.00%) 1,517 1,517
Req 5 - completionInfo 53ms (± 0.84%) 53ms (± 0.84%) 0ms ( 0.00%) 52ms 54ms
xstateTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 2,225ms (± 0.73%) 2,219ms (± 0.48%) -5ms (- 0.23%) 2,196ms 2,243ms
Req 2 - geterr 778ms (± 0.45%) 782ms (± 0.45%) +4ms (+ 0.54%) 777ms 792ms
Req 3 - references 64ms (± 0.90%) 64ms (± 1.10%) -0ms (- 0.16%) 63ms 66ms
Req 4 - navto 250ms (± 0.47%) 248ms (± 0.30%) -2ms (- 0.88%) 246ms 249ms
Req 5 - completionInfo count 3,244 (± 0.00%) 3,244 (± 0.00%) 0 ( 0.00%) 3,244 3,244
Req 5 - completionInfo 268ms (± 0.36%) 268ms (± 0.49%) +1ms (+ 0.19%) 265ms 271ms
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 50310 10
Baseline main 10

Developer Information:

Download Benchmark

@weswigham
Copy link
Member Author

@typescript-bot perf test this (just in case the assertion affects things)

@typescript-bot
Copy link
Collaborator

typescript-bot commented Aug 19, 2022

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

Compiler

Comparison Report - main..50310
Metric main 50310 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 361,586k (± 0.03%) 0k 🟩-361,586k (-100.00%) 0k 0k
Parse Time 2.10s (± 0.52%) 0.00s 🟩-2.10s (-100.00%) 0.00s 0.00s
Bind Time 0.90s (± 0.58%) 0.00s 🟩-0.90s (-100.00%) 0.00s 0.00s
Check Time 6.04s (± 0.47%) 0.00s 🟩-6.04s (-100.00%) 0.00s 0.00s
Emit Time 5.99s (± 0.77%) 0.00s 🟩-5.99s (-100.00%) 0.00s 0.00s
Total Time 15.03s (± 0.39%) 0.00s 🟩-15.03s (-100.00%) 0.00s 0.00s
Compiler-Unions - node (v10.16.3, x64)
Memory used 205,764k (± 0.02%) 0k 🟩-205,764k (-100.00%) 0k 0k
Parse Time 0.83s (± 1.19%) 0.00s 🟩-0.83s (-100.00%) 0.00s 0.00s
Bind Time 0.53s (± 1.37%) 0.00s 🟩-0.53s (-100.00%) 0.00s 0.00s
Check Time 7.42s (± 0.74%) 0.00s 🟩-7.42s (-100.00%) 0.00s 0.00s
Emit Time 2.44s (± 0.89%) 0.00s 🟩-2.44s (-100.00%) 0.00s 0.00s
Total Time 11.22s (± 0.59%) 0.00s 🟩-11.22s (-100.00%) 0.00s 0.00s
Monaco - node (v10.16.3, x64)
Memory used 344,112k (± 0.01%) 0k 🟩-344,112k (-100.00%) 0k 0k
Parse Time 1.61s (± 0.72%) 0.00s 🟩-1.61s (-100.00%) 0.00s 0.00s
Bind Time 0.76s (± 0.76%) 0.00s 🟩-0.76s (-100.00%) 0.00s 0.00s
Check Time 5.99s (± 0.39%) 0.00s 🟩-5.99s (-100.00%) 0.00s 0.00s
Emit Time 3.22s (± 0.79%) 0.00s 🟩-3.22s (-100.00%) 0.00s 0.00s
Total Time 11.58s (± 0.36%) 0.00s 🟩-11.58s (-100.00%) 0.00s 0.00s
TFS - node (v10.16.3, x64)
Memory used 305,329k (± 0.04%) 305,293k (± 0.02%) -36k (- 0.01%) 305,134k 305,411k
Parse Time 1.29s (± 0.90%) 1.29s (± 0.82%) -0.00s (- 0.08%) 1.27s 1.31s
Bind Time 0.72s (± 0.72%) 0.72s (± 0.77%) +0.00s (+ 0.14%) 0.71s 0.73s
Check Time 5.47s (± 0.47%) 5.46s (± 0.31%) -0.01s (- 0.13%) 5.42s 5.50s
Emit Time 3.36s (± 1.12%) 3.38s (± 1.54%) +0.02s (+ 0.57%) 3.27s 3.49s
Total Time 10.84s (± 0.48%) 10.86s (± 0.56%) +0.01s (+ 0.10%) 10.68s 10.96s
material-ui - node (v10.16.3, x64)
Memory used 472,955k (± 0.01%) 0k 🟩-472,955k (-100.00%) 0k 0k
Parse Time 1.83s (± 0.57%) 0.00s 🟩-1.83s (-100.00%) 0.00s 0.00s
Bind Time 0.69s (± 0.87%) 0.00s 🟩-0.69s (-100.00%) 0.00s 0.00s
Check Time 14.59s (± 0.65%) 0.00s 🟩-14.59s (-100.00%) 0.00s 0.00s
Emit Time 0.00s (± 0.00%) 0.00s 0.00s ( NaN%) 0.00s 0.00s
Total Time 17.11s (± 0.58%) 0.00s 🟩-17.11s (-100.00%) 0.00s 0.00s
xstate - node (v10.16.3, x64)
Memory used 582,736k (± 0.02%) 0k 🟩-582,736k (-100.00%) 0k 0k
Parse Time 2.61s (± 0.45%) 0.00s 🟩-2.61s (-100.00%) 0.00s 0.00s
Bind Time 1.05s (± 1.01%) 0.00s 🟩-1.05s (-100.00%) 0.00s 0.00s
Check Time 1.58s (± 0.79%) 0.00s 🟩-1.58s (-100.00%) 0.00s 0.00s
Emit Time 0.07s (± 0.00%) 0.00s 🟩-0.07s (-100.00%) 0.00s 0.00s
Total Time 5.30s (± 0.50%) 0.00s 🟩-5.30s (-100.00%) 0.00s 0.00s
Angular - node (v12.1.0, x64)
Memory used 339,070k (± 0.02%) 0k 🟩-339,070k (-100.00%) 0k 0k
Parse Time 2.11s (± 0.62%) 0.00s 🟩-2.11s (-100.00%) 0.00s 0.00s
Bind Time 0.86s (± 0.57%) 0.00s 🟩-0.86s (-100.00%) 0.00s 0.00s
Check Time 5.85s (± 0.74%) 0.00s 🟩-5.85s (-100.00%) 0.00s 0.00s
Emit Time 6.25s (± 1.47%) 0.00s 🟩-6.25s (-100.00%) 0.00s 0.00s
Total Time 15.07s (± 0.87%) 0.00s 🟩-15.07s (-100.00%) 0.00s 0.00s
Compiler-Unions - node (v12.1.0, x64)
Memory used 193,424k (± 0.14%) 0k 🟩-193,424k (-100.00%) 0k 0k
Parse Time 0.83s (± 0.78%) 0.00s 🟩-0.83s (-100.00%) 0.00s 0.00s
Bind Time 0.56s (± 0.90%) 0.00s 🟩-0.56s (-100.00%) 0.00s 0.00s
Check Time 6.92s (± 0.73%) 0.00s 🟩-6.92s (-100.00%) 0.00s 0.00s
Emit Time 2.46s (± 0.97%) 0.00s 🟩-2.46s (-100.00%) 0.00s 0.00s
Total Time 10.76s (± 0.61%) 0.00s 🟩-10.76s (-100.00%) 0.00s 0.00s
Monaco - node (v12.1.0, x64)
Memory used 327,076k (± 0.02%) 0k 🟩-327,076k (-100.00%) 0k 0k
Parse Time 1.59s (± 1.00%) 0.00s 🟩-1.59s (-100.00%) 0.00s 0.00s
Bind Time 0.74s (± 0.40%) 0.00s 🟩-0.74s (-100.00%) 0.00s 0.00s
Check Time 5.84s (± 0.37%) 0.00s 🟩-5.84s (-100.00%) 0.00s 0.00s
Emit Time 3.32s (± 0.41%) 0.00s 🟩-3.32s (-100.00%) 0.00s 0.00s
Total Time 11.48s (± 0.24%) 0.00s 🟩-11.48s (-100.00%) 0.00s 0.00s
TFS - node (v12.1.0, x64)
Memory used 289,865k (± 0.02%) 289,822k (± 0.05%) -43k (- 0.01%) 289,275k 289,955k
Parse Time 1.30s (± 0.81%) 1.30s (± 0.74%) -0.01s (- 0.38%) 1.28s 1.33s
Bind Time 0.71s (± 0.52%) 0.72s (± 0.77%) +0.00s (+ 0.42%) 0.71s 0.73s
Check Time 5.39s (± 0.42%) 5.39s (± 0.76%) +0.01s (+ 0.09%) 5.30s 5.49s
Emit Time 3.48s (± 0.74%) 3.49s (± 1.00%) +0.01s (+ 0.29%) 3.44s 3.61s
Total Time 10.89s (± 0.41%) 10.90s (± 0.65%) +0.01s (+ 0.07%) 10.78s 11.12s
material-ui - node (v12.1.0, x64)
Memory used 451,911k (± 0.05%) 0k 🟩-451,911k (-100.00%) 0k 0k
Parse Time 1.83s (± 0.67%) 0.00s 🟩-1.83s (-100.00%) 0.00s 0.00s
Bind Time 0.67s (± 0.88%) 0.00s 🟩-0.67s (-100.00%) 0.00s 0.00s
Check Time 13.20s (± 0.88%) 0.00s 🟩-13.20s (-100.00%) 0.00s 0.00s
Emit Time 0.00s (± 0.00%) 0.00s 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.70s (± 0.77%) 0.00s 🟩-15.70s (-100.00%) 0.00s 0.00s
xstate - node (v12.1.0, x64)
Memory used 547,893k (± 0.01%) 0k 🟩-547,893k (-100.00%) 0k 0k
Parse Time 2.54s (± 0.40%) 0.00s 🟩-2.54s (-100.00%) 0.00s 0.00s
Bind Time 1.03s (± 0.74%) 0.00s 🟩-1.03s (-100.00%) 0.00s 0.00s
Check Time 1.51s (± 0.62%) 0.00s 🟩-1.51s (-100.00%) 0.00s 0.00s
Emit Time 0.07s (± 0.00%) 0.00s 🟩-0.07s (-100.00%) 0.00s 0.00s
Total Time 5.15s (± 0.30%) 0.00s 🟩-5.15s (-100.00%) 0.00s 0.00s
Angular - node (v14.15.1, x64)
Memory used 337,139k (± 0.01%) 0k 🟩-337,139k (-100.00%) 0k 0k
Parse Time 2.07s (± 0.59%) 0.00s 🟩-2.07s (-100.00%) 0.00s 0.00s
Bind Time 0.90s (± 0.78%) 0.00s 🟩-0.90s (-100.00%) 0.00s 0.00s
Check Time 5.83s (± 0.58%) 0.00s 🟩-5.83s (-100.00%) 0.00s 0.00s
Emit Time 6.17s (± 0.65%) 0.00s 🟩-6.17s (-100.00%) 0.00s 0.00s
Total Time 14.97s (± 0.41%) 0.00s 🟩-14.97s (-100.00%) 0.00s 0.00s
Compiler-Unions - node (v14.15.1, x64)
Memory used 192,016k (± 0.02%) 0k 🟩-192,016k (-100.00%) 0k 0k
Parse Time 0.85s (± 0.85%) 0.00s 🟩-0.85s (-100.00%) 0.00s 0.00s
Bind Time 0.58s (± 1.07%) 0.00s 🟩-0.58s (-100.00%) 0.00s 0.00s
Check Time 6.93s (± 0.51%) 0.00s 🟩-6.93s (-100.00%) 0.00s 0.00s
Emit Time 2.42s (± 0.91%) 0.00s 🟩-2.42s (-100.00%) 0.00s 0.00s
Total Time 10.79s (± 0.43%) 0.00s 🟩-10.79s (-100.00%) 0.00s 0.00s
Monaco - node (v14.15.1, x64)
Memory used 325,899k (± 0.01%) 0k 🟩-325,899k (-100.00%) 0k 0k
Parse Time 1.58s (± 0.78%) 0.00s 🟩-1.58s (-100.00%) 0.00s 0.00s
Bind Time 0.78s (± 0.76%) 0.00s 🟩-0.78s (-100.00%) 0.00s 0.00s
Check Time 5.71s (± 0.56%) 0.00s 🟩-5.71s (-100.00%) 0.00s 0.00s
Emit Time 3.33s (± 0.90%) 0.00s 🟩-3.33s (-100.00%) 0.00s 0.00s
Total Time 11.40s (± 0.61%) 0.00s 🟩-11.40s (-100.00%) 0.00s 0.00s
TFS - node (v14.15.1, x64)
Memory used 288,944k (± 0.01%) 288,978k (± 0.01%) +35k (+ 0.01%) 288,935k 289,014k
Parse Time 1.35s (± 1.13%) 1.35s (± 2.71%) +0.00s (+ 0.30%) 1.29s 1.47s
Bind Time 0.74s (± 1.59%) 0.76s (± 4.22%) +0.02s (+ 2.98%) 0.73s 0.87s
Check Time 5.39s (± 0.52%) 5.40s (± 0.44%) +0.01s (+ 0.26%) 5.34s 5.44s
Emit Time 3.60s (± 0.79%) 3.52s (± 2.01%) -0.07s (- 2.06%) 3.40s 3.65s
Total Time 11.07s (± 0.33%) 11.04s (± 0.84%) -0.03s (- 0.31%) 10.84s 11.18s
material-ui - node (v14.15.1, x64)
Memory used 450,319k (± 0.00%) 0k 🟩-450,319k (-100.00%) 0k 0k
Parse Time 1.88s (± 0.53%) 0.00s 🟩-1.88s (-100.00%) 0.00s 0.00s
Bind Time 0.71s (± 0.91%) 0.00s 🟩-0.71s (-100.00%) 0.00s 0.00s
Check Time 13.19s (± 0.78%) 0.00s 🟩-13.19s (-100.00%) 0.00s 0.00s
Emit Time 0.00s (± 0.00%) 0.00s 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.78s (± 0.64%) 0.00s 🟩-15.78s (-100.00%) 0.00s 0.00s
xstate - node (v14.15.1, x64)
Memory used 545,613k (± 0.01%) 0k 🟩-545,613k (-100.00%) 0k 0k
Parse Time 2.61s (± 0.47%) 0.00s 🟩-2.61s (-100.00%) 0.00s 0.00s
Bind Time 1.14s (± 0.68%) 0.00s 🟩-1.14s (-100.00%) 0.00s 0.00s
Check Time 1.55s (± 0.63%) 0.00s 🟩-1.55s (-100.00%) 0.00s 0.00s
Emit Time 0.07s (± 3.14%) 0.00s 🟩-0.07s (-100.00%) 0.00s 0.00s
Total Time 5.38s (± 0.27%) 0.00s 🟩-5.38s (-100.00%) 0.00s 0.00s
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 50310 10
Baseline main 10

TSServer

Comparison Report - main..50310
Metric main 50310 Delta Best Worst
Compiler-UnionsTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 1,457ms (± 0.59%) 1,453ms (± 0.63%) -4ms (- 0.25%) 1,424ms 1,471ms
Req 2 - geterr 3,796ms (± 0.41%) 3,808ms (± 0.45%) +12ms (+ 0.32%) 3,771ms 3,846ms
Req 3 - references 278ms (± 0.92%) 275ms (± 0.59%) -4ms (- 1.26%) 272ms 279ms
Req 4 - navto 231ms (± 0.66%) 233ms (± 0.99%) +1ms (+ 0.61%) 228ms 237ms
Req 5 - completionInfo count 1,355 (± 0.00%) 1,355 (± 0.00%) 0 ( 0.00%) 1,355 1,355
Req 5 - completionInfo 63ms (± 4.10%) 63ms (± 5.26%) -0ms (- 0.16%) 59ms 71ms
CompilerTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 1,557ms (± 0.60%) 1,561ms (± 0.39%) +3ms (+ 0.21%) 1,544ms 1,577ms
Req 2 - geterr 2,281ms (± 0.63%) 2,278ms (± 0.39%) -3ms (- 0.11%) 2,259ms 2,306ms
Req 3 - references 297ms (± 1.06%) 298ms (± 1.46%) +2ms (+ 0.51%) 292ms 314ms
Req 4 - navto 238ms (± 1.78%) 235ms (± 1.92%) -3ms (- 1.09%) 226ms 245ms
Req 5 - completionInfo count 1,517 (± 0.00%) 1,517 (± 0.00%) 0 ( 0.00%) 1,517 1,517
Req 5 - completionInfo 68ms (± 2.95%) 68ms (± 2.74%) +0ms (+ 0.59%) 62ms 71ms
xstateTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 2,178ms (± 0.54%) 2,174ms (± 0.51%) -4ms (- 0.20%) 2,150ms 2,190ms
Req 2 - geterr 778ms (± 0.77%) 99ms (± 1.53%) 🟩-678ms (-87.23%) 96ms 101ms
Req 3 - references 100ms (± 1.31%) 79ms (± 2.14%) 🟩-21ms (-20.92%) 75ms 83ms
Req 4 - navto 250ms (± 1.14%) 269ms (± 6.96%) +19ms (+ 7.47%) 242ms 319ms
Req 5 - completionInfo count 3,293 (± 0.00%) 3,293 (± 0.00%) 0 ( 0.00%) 3,293 3,293
Req 5 - completionInfo 269ms (± 1.06%) 298ms (± 3.32%) +29ms (+10.62%) 278ms 320ms
Compiler-UnionsTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 1,483ms (± 0.95%) 1,488ms (± 0.47%) +5ms (+ 0.34%) 1,472ms 1,504ms
Req 2 - geterr 3,534ms (± 0.47%) 3,557ms (± 0.61%) +23ms (+ 0.65%) 3,514ms 3,610ms
Req 3 - references 262ms (± 0.55%) 262ms (± 0.68%) +0ms (+ 0.08%) 259ms 267ms
Req 4 - navto 205ms (± 0.67%) 204ms (± 1.31%) -1ms (- 0.29%) 199ms 211ms
Req 5 - completionInfo count 1,355 (± 0.00%) 1,355 (± 0.00%) 0 ( 0.00%) 1,355 1,355
Req 5 - completionInfo 69ms (±16.22%) 73ms (±16.46%) +4ms (+ 6.13%) 55ms 104ms
CompilerTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 1,569ms (± 0.67%) 1,577ms (± 0.68%) +8ms (+ 0.52%) 1,562ms 1,615ms
Req 2 - geterr 2,220ms (± 0.48%) 2,222ms (± 0.80%) +3ms (+ 0.11%) 2,197ms 2,277ms
Req 3 - references 277ms (± 2.00%) 273ms (± 0.57%) -4ms (- 1.41%) 269ms 277ms
Req 4 - navto 214ms (± 0.74%) 216ms (± 0.92%) +2ms (+ 1.12%) 212ms 221ms
Req 5 - completionInfo count 1,517 (± 0.00%) 1,517 (± 0.00%) 0 ( 0.00%) 1,517 1,517
Req 5 - completionInfo 62ms (± 4.68%) 62ms (± 4.36%) -0ms (- 0.48%) 58ms 68ms
xstateTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 2,117ms (± 1.04%) 2,127ms (± 0.59%) +10ms (+ 0.49%) 2,104ms 2,159ms
Req 2 - geterr 756ms (± 0.40%) 113ms (± 6.91%) 🟩-644ms (-85.12%) 105ms 135ms
Req 3 - references 68ms (± 1.07%) 74ms (± 1.31%) +6ms (+ 8.36%) 72ms 77ms
Req 4 - navto 238ms (± 1.61%) 241ms (± 0.92%) +3ms (+ 1.22%) 234ms 245ms
Req 5 - completionInfo count 3,293 (± 0.00%) 3,293 (± 0.00%) 0 ( 0.00%) 3,293 3,293
Req 5 - completionInfo 267ms (± 0.78%) 280ms (± 1.04%) +12ms (+ 4.53%) 272ms 284ms
Compiler-UnionsTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 1,530ms (± 0.61%) 1,536ms (± 0.57%) +5ms (+ 0.35%) 1,519ms 1,555ms
Req 2 - geterr 3,675ms (± 0.48%) 3,703ms (± 0.45%) +28ms (+ 0.77%) 3,667ms 3,747ms
Req 3 - references 276ms (± 0.69%) 275ms (± 0.76%) -1ms (- 0.36%) 271ms 282ms
Req 4 - navto 218ms (± 0.72%) 218ms (± 0.72%) -0ms (- 0.18%) 216ms 223ms
Req 5 - completionInfo count 1,355 (± 0.00%) 1,355 (± 0.00%) 0 ( 0.00%) 1,355 1,355
Req 5 - completionInfo 56ms (± 2.29%) 56ms (± 4.60%) 0ms ( 0.00%) 54ms 66ms
CompilerTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 1,605ms (± 0.42%) 1,614ms (± 0.68%) +8ms (+ 0.52%) 1,593ms 1,646ms
Req 2 - geterr 2,352ms (± 0.67%) 2,351ms (± 0.53%) -2ms (- 0.06%) 2,334ms 2,393ms
Req 3 - references 289ms (± 1.59%) 287ms (± 0.99%) -2ms (- 0.52%) 283ms 295ms
Req 4 - navto 229ms (± 0.77%) 228ms (± 0.57%) -1ms (- 0.61%) 225ms 230ms
Req 5 - completionInfo count 1,517 (± 0.00%) 1,517 (± 0.00%) 0 ( 0.00%) 1,517 1,517
Req 5 - completionInfo 53ms (± 1.37%) 53ms (± 0.90%) -1ms (- 0.94%) 52ms 54ms
xstateTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 2,224ms (± 0.48%) 2,222ms (± 0.57%) -2ms (- 0.10%) 2,196ms 2,263ms
Req 2 - geterr 778ms (± 0.58%) 91ms (± 0.64%) 🟩-687ms (-88.34%) 90ms 92ms
Req 3 - references 66ms (± 1.17%) 80ms (± 0.86%) +14ms (+20.42%) 78ms 81ms
Req 4 - navto 247ms (± 0.62%) 250ms (± 0.81%) +3ms (+ 1.34%) 247ms 255ms
Req 5 - completionInfo count 3,293 (± 0.00%) 3,293 (± 0.00%) 0 ( 0.00%) 3,293 3,293
Req 5 - completionInfo 272ms (± 0.55%) 279ms (± 0.57%) +7ms (+ 2.39%) 276ms 284ms
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 50310 10
Baseline main 10

Developer Information:

Download Benchmark

@weswigham
Copy link
Member Author

@typescript-bot perf test this again lmao

@typescript-bot
Copy link
Collaborator

typescript-bot commented Aug 19, 2022

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

Compiler

Comparison Report - main..50310
Metric main 50310 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 361,636k (± 0.02%) 361,577k (± 0.03%) -59k (- 0.02%) 361,326k 361,765k
Parse Time 2.10s (± 0.36%) 2.11s (± 0.51%) +0.01s (+ 0.62%) 2.08s 2.13s
Bind Time 0.90s (± 0.92%) 0.91s (± 1.32%) +0.01s (+ 1.56%) 0.88s 0.94s
Check Time 6.06s (± 0.61%) 6.08s (± 0.40%) +0.02s (+ 0.31%) 6.02s 6.11s
Emit Time 5.99s (± 0.90%) 6.04s (± 0.54%) +0.05s (+ 0.87%) 5.96s 6.12s
Total Time 15.05s (± 0.58%) 15.14s (± 0.22%) +0.10s (+ 0.65%) 15.08s 15.23s
Compiler-Unions - node (v10.16.3, x64)
Memory used 205,702k (± 0.02%) 205,775k (± 0.04%) +73k (+ 0.04%) 205,653k 205,954k
Parse Time 0.83s (± 1.26%) 0.83s (± 1.02%) +0.00s (+ 0.36%) 0.81s 0.85s
Bind Time 0.53s (± 1.90%) 0.52s (± 1.58%) -0.00s (- 0.57%) 0.51s 0.54s
Check Time 7.36s (± 0.40%) 7.37s (± 0.41%) +0.01s (+ 0.11%) 7.29s 7.45s
Emit Time 2.43s (± 1.09%) 2.41s (± 1.02%) -0.02s (- 0.66%) 2.36s 2.46s
Total Time 11.15s (± 0.23%) 11.13s (± 0.38%) -0.01s (- 0.12%) 11.05s 11.21s
Monaco - node (v10.16.3, x64)
Memory used 344,176k (± 0.02%) 344,184k (± 0.02%) +8k (+ 0.00%) 344,087k 344,394k
Parse Time 1.60s (± 0.77%) 1.60s (± 0.66%) +0.00s (+ 0.06%) 1.58s 1.63s
Bind Time 0.75s (± 1.01%) 0.75s (± 0.45%) -0.00s (- 0.26%) 0.75s 0.76s
Check Time 6.00s (± 0.38%) 6.01s (± 0.69%) +0.01s (+ 0.12%) 5.92s 6.07s
Emit Time 3.23s (± 0.59%) 3.23s (± 0.82%) -0.01s (- 0.19%) 3.16s 3.28s
Total Time 11.59s (± 0.38%) 11.59s (± 0.35%) +0.01s (+ 0.05%) 11.46s 11.66s
TFS - node (v10.16.3, x64)
Memory used 305,304k (± 0.02%) 305,267k (± 0.03%) -37k (- 0.01%) 304,970k 305,369k
Parse Time 1.29s (± 0.63%) 1.29s (± 0.60%) -0.00s (- 0.08%) 1.28s 1.31s
Bind Time 0.72s (± 0.94%) 0.72s (± 0.65%) -0.00s (- 0.55%) 0.71s 0.73s
Check Time 5.45s (± 0.53%) 5.46s (± 0.55%) +0.01s (+ 0.18%) 5.37s 5.51s
Emit Time 3.36s (± 1.41%) 3.40s (± 1.21%) +0.04s (+ 1.25%) 3.30s 3.49s
Total Time 10.82s (± 0.62%) 10.87s (± 0.42%) +0.04s (+ 0.41%) 10.79s 10.99s
material-ui - node (v10.16.3, x64)
Memory used 472,873k (± 0.01%) 472,914k (± 0.01%) +41k (+ 0.01%) 472,792k 473,036k
Parse Time 1.83s (± 0.37%) 1.83s (± 0.54%) +0.00s (+ 0.27%) 1.82s 1.86s
Bind Time 0.69s (± 1.51%) 0.68s (± 1.39%) -0.00s (- 0.58%) 0.66s 0.70s
Check Time 14.51s (± 0.60%) 14.63s (± 0.76%) +0.12s (+ 0.83%) 14.38s 14.92s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 17.02s (± 0.54%) 17.15s (± 0.66%) +0.12s (+ 0.72%) 16.90s 17.44s
xstate - node (v10.16.3, x64)
Memory used 582,806k (± 0.02%) 582,868k (± 0.02%) +62k (+ 0.01%) 582,563k 583,218k
Parse Time 2.60s (± 0.46%) 2.60s (± 0.50%) -0.00s (- 0.04%) 2.57s 2.62s
Bind Time 1.05s (± 0.74%) 1.05s (± 0.96%) -0.00s (- 0.29%) 1.02s 1.07s
Check Time 1.58s (± 0.71%) 1.58s (± 0.56%) +0.00s (+ 0.06%) 1.56s 1.59s
Emit Time 0.07s (± 4.13%) 0.07s (± 0.00%) -0.00s (- 2.78%) 0.07s 0.07s
Total Time 5.29s (± 0.50%) 5.29s (± 0.54%) -0.00s (- 0.08%) 5.23s 5.34s
Angular - node (v12.1.0, x64)
Memory used 338,983k (± 0.07%) 339,099k (± 0.02%) +115k (+ 0.03%) 338,911k 339,358k
Parse Time 2.10s (± 0.73%) 2.10s (± 0.56%) -0.00s (- 0.14%) 2.07s 2.13s
Bind Time 0.86s (± 0.77%) 0.86s (± 1.09%) -0.00s (- 0.00%) 0.84s 0.88s
Check Time 5.88s (± 0.69%) 5.88s (± 1.03%) +0.00s (+ 0.07%) 5.78s 6.08s
Emit Time 6.23s (± 0.67%) 6.22s (± 0.68%) -0.00s (- 0.08%) 6.13s 6.30s
Total Time 15.07s (± 0.53%) 15.06s (± 0.55%) -0.01s (- 0.05%) 14.82s 15.21s
Compiler-Unions - node (v12.1.0, x64)
Memory used 193,500k (± 0.05%) 193,251k (± 0.30%) -249k (- 0.13%) 190,909k 193,676k
Parse Time 0.82s (± 0.83%) 0.82s (± 0.58%) -0.00s (- 0.24%) 0.81s 0.83s
Bind Time 0.55s (± 1.12%) 0.55s (± 0.54%) -0.00s (- 0.54%) 0.54s 0.55s
Check Time 6.91s (± 0.47%) 6.92s (± 1.10%) +0.01s (+ 0.22%) 6.76s 7.15s
Emit Time 2.45s (± 1.02%) 2.47s (± 1.09%) +0.01s (+ 0.61%) 2.42s 2.54s
Total Time 10.73s (± 0.38%) 10.76s (± 0.79%) +0.03s (+ 0.28%) 10.64s 10.99s
Monaco - node (v12.1.0, x64)
Memory used 327,102k (± 0.02%) 327,094k (± 0.02%) -8k (- 0.00%) 326,916k 327,188k
Parse Time 1.58s (± 0.87%) 1.58s (± 0.71%) -0.00s (- 0.06%) 1.55s 1.60s
Bind Time 0.74s (± 0.80%) 0.74s (± 0.63%) -0.00s (- 0.54%) 0.73s 0.75s
Check Time 5.82s (± 0.37%) 5.81s (± 0.61%) -0.01s (- 0.15%) 5.72s 5.89s
Emit Time 3.29s (± 0.76%) 3.30s (± 0.96%) +0.00s (+ 0.12%) 3.24s 3.40s
Total Time 11.44s (± 0.44%) 11.43s (± 0.45%) -0.01s (- 0.09%) 11.26s 11.51s
TFS - node (v12.1.0, x64)
Memory used 289,923k (± 0.03%) 289,861k (± 0.02%) -61k (- 0.02%) 289,687k 289,970k
Parse Time 1.30s (± 0.89%) 1.29s (± 0.94%) -0.01s (- 0.69%) 1.26s 1.32s
Bind Time 0.72s (± 0.81%) 0.71s (± 0.95%) -0.00s (- 0.42%) 0.69s 0.72s
Check Time 5.36s (± 0.33%) 5.38s (± 0.48%) +0.02s (+ 0.28%) 5.32s 5.44s
Emit Time 3.49s (± 0.72%) 3.49s (± 0.68%) -0.01s (- 0.17%) 3.44s 3.53s
Total Time 10.87s (± 0.29%) 10.87s (± 0.33%) -0.00s (- 0.02%) 10.78s 10.96s
material-ui - node (v12.1.0, x64)
Memory used 452,050k (± 0.01%) 451,910k (± 0.05%) -140k (- 0.03%) 450,948k 452,130k
Parse Time 1.83s (± 0.37%) 1.83s (± 0.74%) +0.00s (+ 0.27%) 1.81s 1.87s
Bind Time 0.67s (± 0.33%) 0.67s (± 0.51%) +0.00s (+ 0.60%) 0.67s 0.68s
Check Time 13.11s (± 0.62%) 13.13s (± 0.53%) +0.01s (+ 0.09%) 12.98s 13.26s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.61s (± 0.53%) 15.63s (± 0.42%) +0.02s (+ 0.13%) 15.48s 15.78s
xstate - node (v12.1.0, x64)
Memory used 547,846k (± 0.01%) 551,123k (± 1.31%) +3,277k (+ 0.60%) 547,609k 580,384k
Parse Time 2.53s (± 0.46%) 2.54s (± 0.50%) +0.01s (+ 0.55%) 2.51s 2.57s
Bind Time 1.02s (± 1.04%) 1.03s (± 0.94%) +0.01s (+ 0.59%) 1.01s 1.05s
Check Time 1.52s (± 0.66%) 1.52s (± 0.46%) +0.00s (+ 0.20%) 1.51s 1.54s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 5.14s (± 0.34%) 5.16s (± 0.50%) +0.02s (+ 0.45%) 5.10s 5.21s
Angular - node (v14.15.1, x64)
Memory used 337,136k (± 0.00%) 337,149k (± 0.01%) +13k (+ 0.00%) 337,092k 337,207k
Parse Time 2.06s (± 0.33%) 2.07s (± 0.63%) +0.00s (+ 0.05%) 2.05s 2.10s
Bind Time 0.90s (± 0.58%) 0.90s (± 1.01%) 0.00s ( 0.00%) 0.89s 0.93s
Check Time 5.85s (± 0.49%) 5.84s (± 0.39%) -0.01s (- 0.09%) 5.80s 5.90s
Emit Time 6.22s (± 0.89%) 6.17s (± 0.50%) -0.06s (- 0.90%) 6.10s 6.24s
Total Time 15.04s (± 0.43%) 14.98s (± 0.30%) -0.06s (- 0.39%) 14.88s 15.06s
Compiler-Unions - node (v14.15.1, x64)
Memory used 192,004k (± 0.01%) 192,065k (± 0.02%) +61k (+ 0.03%) 191,970k 192,116k
Parse Time 0.85s (± 0.73%) 0.84s (± 0.53%) -0.01s (- 0.82%) 0.83s 0.85s
Bind Time 0.58s (± 1.12%) 0.57s (± 1.27%) -0.01s (- 1.04%) 0.55s 0.58s
Check Time 6.89s (± 0.71%) 6.94s (± 0.48%) +0.04s (+ 0.64%) 6.84s 7.01s
Emit Time 2.40s (± 0.78%) 2.41s (± 1.02%) +0.01s (+ 0.50%) 2.38s 2.48s
Total Time 10.72s (± 0.56%) 10.77s (± 0.51%) +0.04s (+ 0.41%) 10.62s 10.90s
Monaco - node (v14.15.1, x64)
Memory used 325,907k (± 0.00%) 325,901k (± 0.00%) -6k (- 0.00%) 325,872k 325,941k
Parse Time 1.57s (± 0.63%) 1.57s (± 0.65%) -0.00s (- 0.19%) 1.55s 1.59s
Bind Time 0.78s (± 0.95%) 0.78s (± 0.64%) -0.00s (- 0.64%) 0.76s 0.78s
Check Time 5.69s (± 0.40%) 5.72s (± 0.81%) +0.03s (+ 0.56%) 5.63s 5.87s
Emit Time 3.32s (± 0.46%) 3.34s (± 0.72%) +0.02s (+ 0.66%) 3.31s 3.40s
Total Time 11.35s (± 0.28%) 11.40s (± 0.63%) +0.04s (+ 0.38%) 11.29s 11.63s
TFS - node (v14.15.1, x64)
Memory used 288,957k (± 0.01%) 288,992k (± 0.01%) +35k (+ 0.01%) 288,944k 289,040k
Parse Time 1.34s (± 1.79%) 1.35s (± 1.02%) +0.00s (+ 0.37%) 1.31s 1.37s
Bind Time 0.76s (± 4.75%) 0.74s (± 2.18%) -0.02s (- 2.89%) 0.72s 0.80s
Check Time 5.35s (± 0.34%) 5.37s (± 0.51%) +0.02s (+ 0.41%) 5.31s 5.43s
Emit Time 3.54s (± 2.13%) 3.59s (± 1.80%) +0.06s (+ 1.67%) 3.39s 3.73s
Total Time 10.99s (± 0.85%) 11.05s (± 0.73%) +0.07s (+ 0.61%) 10.79s 11.21s
material-ui - node (v14.15.1, x64)
Memory used 450,313k (± 0.00%) 450,109k (± 0.07%) -204k (- 0.05%) 449,201k 450,402k
Parse Time 1.87s (± 0.55%) 1.88s (± 0.61%) +0.01s (+ 0.37%) 1.85s 1.90s
Bind Time 0.72s (± 0.97%) 0.72s (± 0.62%) -0.00s (- 0.14%) 0.71s 0.73s
Check Time 13.23s (± 0.69%) 13.30s (± 0.69%) +0.07s (+ 0.51%) 13.13s 13.55s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.82s (± 0.60%) 15.89s (± 0.59%) +0.08s (+ 0.49%) 15.72s 16.14s
xstate - node (v14.15.1, x64)
Memory used 545,620k (± 0.00%) 545,688k (± 0.01%) +68k (+ 0.01%) 545,627k 545,736k
Parse Time 2.59s (± 0.40%) 2.60s (± 0.51%) +0.01s (+ 0.42%) 2.58s 2.63s
Bind Time 1.14s (± 0.88%) 1.14s (± 0.39%) -0.01s (- 0.52%) 1.13s 1.15s
Check Time 1.56s (± 0.57%) 1.56s (± 0.48%) +0.01s (+ 0.45%) 1.55s 1.58s
Emit Time 0.07s (± 4.66%) 0.07s (± 4.66%) 0.00s ( 0.00%) 0.07s 0.08s
Total Time 5.37s (± 0.33%) 5.37s (± 0.38%) +0.00s (+ 0.09%) 5.34s 5.42s
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 50310 10
Baseline main 10

TSServer

Comparison Report - main..50310
Metric main 50310 Delta Best Worst
Compiler-UnionsTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 1,454ms (± 0.50%) 1,455ms (± 0.61%) +1ms (+ 0.07%) 1,432ms 1,477ms
Req 2 - geterr 3,793ms (± 0.46%) 3,811ms (± 0.48%) +18ms (+ 0.48%) 3,749ms 3,848ms
Req 3 - references 279ms (± 1.65%) 276ms (± 1.01%) -3ms (- 0.97%) 270ms 284ms
Req 4 - navto 232ms (± 0.89%) 230ms (± 2.06%) -2ms (- 0.73%) 214ms 237ms
Req 5 - completionInfo count 1,355 (± 0.00%) 1,355 (± 0.00%) 0 ( 0.00%) 1,355 1,355
Req 5 - completionInfo 66ms (±10.14%) 63ms (± 3.16%) 🟩-3ms (- 4.11%) 59ms 68ms
CompilerTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 1,568ms (± 0.85%) 1,570ms (± 0.81%) +2ms (+ 0.13%) 1,535ms 1,595ms
Req 2 - geterr 2,280ms (± 0.42%) 2,280ms (± 0.77%) +0ms (+ 0.00%) 2,231ms 2,317ms
Req 3 - references 300ms (± 1.66%) 297ms (± 0.90%) -3ms (- 0.93%) 290ms 302ms
Req 4 - navto 236ms (± 2.38%) 233ms (± 1.84%) -3ms (- 1.10%) 225ms 244ms
Req 5 - completionInfo count 1,517 (± 0.00%) 1,517 (± 0.00%) 0 ( 0.00%) 1,517 1,517
Req 5 - completionInfo 68ms (± 2.37%) 68ms (± 3.00%) +1ms (+ 1.33%) 63ms 71ms
xstateTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 2,179ms (± 0.40%) 2,172ms (± 0.52%) -8ms (- 0.35%) 2,147ms 2,195ms
Req 2 - geterr 772ms (± 0.58%) 777ms (± 0.58%) +5ms (+ 0.62%) 768ms 790ms
Req 3 - references 99ms (± 0.81%) 100ms (± 0.84%) +1ms (+ 1.11%) 99ms 103ms
Req 4 - navto 251ms (± 0.97%) 251ms (± 1.02%) -1ms (- 0.28%) 246ms 256ms
Req 5 - completionInfo count 3,293 (± 0.00%) 3,293 (± 0.00%) 0 ( 0.00%) 3,293 3,293
Req 5 - completionInfo 268ms (± 0.88%) 269ms (± 1.36%) +1ms (+ 0.34%) 261ms 277ms
Compiler-UnionsTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 1,476ms (± 0.63%) 1,483ms (± 0.53%) +7ms (+ 0.45%) 1,469ms 1,499ms
Req 2 - geterr 3,545ms (± 0.62%) 3,539ms (± 0.45%) -6ms (- 0.17%) 3,501ms 3,562ms
Req 3 - references 261ms (± 0.60%) 263ms (± 1.71%) +1ms (+ 0.54%) 259ms 280ms
Req 4 - navto 204ms (± 0.86%) 204ms (± 0.68%) -0ms (- 0.15%) 201ms 208ms
Req 5 - completionInfo count 1,355 (± 0.00%) 1,355 (± 0.00%) 0 ( 0.00%) 1,355 1,355
Req 5 - completionInfo 74ms (±13.08%) 66ms (±14.44%) 🟩-8ms (-10.90%) 55ms 86ms
CompilerTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 1,572ms (± 0.82%) 1,564ms (± 0.43%) -8ms (- 0.51%) 1,549ms 1,578ms
Req 2 - geterr 2,216ms (± 0.39%) 2,218ms (± 0.54%) +2ms (+ 0.09%) 2,188ms 2,240ms
Req 3 - references 273ms (± 0.83%) 272ms (± 0.83%) -1ms (- 0.22%) 269ms 278ms
Req 4 - navto 215ms (± 0.80%) 216ms (± 0.90%) +0ms (+ 0.19%) 210ms 219ms
Req 5 - completionInfo count 1,517 (± 0.00%) 1,517 (± 0.00%) 0 ( 0.00%) 1,517 1,517
Req 5 - completionInfo 61ms (± 3.28%) 62ms (± 4.20%) +1ms (+ 1.96%) 57ms 67ms
xstateTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 2,166ms (± 2.66%) 2,116ms (± 0.67%) -50ms (- 2.29%) 2,094ms 2,152ms
Req 2 - geterr 774ms (± 2.61%) 757ms (± 0.51%) -17ms (- 2.21%) 746ms 764ms
Req 3 - references 70ms (± 3.51%) 67ms (± 1.38%) 🟩-3ms (- 4.55%) 65ms 69ms
Req 4 - navto 245ms (± 3.19%) 241ms (± 1.20%) -5ms (- 2.00%) 231ms 245ms
Req 5 - completionInfo count 3,293 (± 0.00%) 3,293 (± 0.00%) 0 ( 0.00%) 3,293 3,293
Req 5 - completionInfo 272ms (± 3.30%) 266ms (± 1.45%) -6ms (- 2.35%) 256ms 274ms
Compiler-UnionsTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 1,530ms (± 0.49%) 1,533ms (± 0.32%) +3ms (+ 0.17%) 1,523ms 1,546ms
Req 2 - geterr 3,699ms (± 0.83%) 3,685ms (± 0.68%) -14ms (- 0.38%) 3,629ms 3,730ms
Req 3 - references 275ms (± 0.67%) 277ms (± 0.67%) +2ms (+ 0.65%) 274ms 282ms
Req 4 - navto 217ms (± 0.67%) 219ms (± 0.70%) +1ms (+ 0.51%) 215ms 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.05%) 55ms (± 0.81%) -2ms (- 2.66%) 54ms 56ms
CompilerTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 1,611ms (± 0.70%) 1,616ms (± 0.70%) +4ms (+ 0.27%) 1,594ms 1,642ms
Req 2 - geterr 2,353ms (± 0.54%) 2,348ms (± 0.61%) -5ms (- 0.23%) 2,310ms 2,376ms
Req 3 - references 287ms (± 0.76%) 285ms (± 0.85%) -2ms (- 0.56%) 279ms 289ms
Req 4 - navto 230ms (± 1.66%) 232ms (± 2.56%) +1ms (+ 0.61%) 224ms 249ms
Req 5 - completionInfo count 1,517 (± 0.00%) 1,517 (± 0.00%) 0 ( 0.00%) 1,517 1,517
Req 5 - completionInfo 53ms (± 1.05%) 53ms (± 1.13%) -0ms (- 0.38%) 51ms 54ms
xstateTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 2,269ms (± 2.57%) 2,213ms (± 0.42%) -56ms (- 2.49%) 2,194ms 2,232ms
Req 2 - geterr 798ms (± 2.75%) 784ms (± 0.44%) -14ms (- 1.77%) 775ms 792ms
Req 3 - references 67ms (± 2.22%) 66ms (± 1.14%) -1ms (- 0.90%) 65ms 69ms
Req 4 - navto 250ms (± 2.75%) 247ms (± 0.77%) -3ms (- 1.24%) 244ms 252ms
Req 5 - completionInfo count 3,293 (± 0.00%) 3,293 (± 0.00%) 0 ( 0.00%) 3,293 3,293
Req 5 - completionInfo 276ms (± 2.39%) 273ms (± 0.25%) -3ms (- 1.12%) 271ms 274ms
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 50310 10
Baseline main 10

Developer Information:

Download Benchmark

@weswigham weswigham marked this pull request as ready for review August 19, 2022 21:11
@weswigham
Copy link
Member Author

weswigham commented Aug 19, 2022

@ahejlsberg I've added a diagnostic for source elements which trigger more than 1 million comparisons on their own. That number isn't wholly arbitrary - 1 million only takes a few seconds for simple types, which is fast enough that you may not notice the possible perf issue without the error, and is just below how many comparisons two unions of 2^10 elements (1024) would take to compare naively. (Our union element cap is 100,000, so you can go way higher in terms of union size (2^16 is fine, 2^17 is not) - but these large unions are fine to use if and only if they consistently hit our optimized codepaths or aren't compared against one another in the naive quadradic way!)

// get better perf, or the constructs in use may be a good candidate for specialized optimizations
// in the compiler itself to reduce the amount of work required.
if (assignabilityCacheContribution > 4_000_000) {
error(node, Diagnostics.This_source_element_is_ultimately_responsible_for_0_million_type_comparisons_It_is_likely_very_slow_and_may_impact_editor_performance_Simplify_the_types_in_use, Math.floor(assignabilityCacheContribution / 1_000_000));
Copy link
Member Author

Choose a reason for hiding this comment

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

As an aside, since the error is about cache sizes, it's inherently unstable - the first location to do these comparisons will get this error, others that do the same comparisons will not. Historically, location-unstable errors like this haven't been good for incremental build and the like, since the errors shifting mucks with up-to-dateness checks. This could maybe be worked around by indicating this error status in the relationship cache itself (eg, this top-level comparison triggered this overflow, so report the complexity error at every site where this comparison is performed), but given the likely rarity of this error, I'm not sure how worth it that'd be to do, given the complexity that'd entail compared to how simple this is.

Copy link

Choose a reason for hiding this comment

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

@weswigham I like the detailed explanation, thank you 👍 . I think, acknowledging the instability in cache sizes and its potential impact on incremental builds is crucial. Regarding the error status, I wonder if there's a simpler way to provide consistent feedback for similar comparisons without compromising complexity. Perhaps exploring a middle ground could help maintain simplicity while addressing occasional instability?

// By manufacturing the fallback in here, we guarantee it has a higher typeid than the bit strings,
// and thus is sorted to the end of the union, guaranteeing relationship checking passes with a maximal
// number of comparisons when a naive comparison is done (guaranteeing this test is slow)
return null as any as Box<ElevenBits | (FallbackPrefix extends never ? never : `${FallbackPrefix}${string}`)>; // return type is a union
Copy link
Member Author

Choose a reason for hiding this comment

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

As a double-aside, while writing this speedrun-to-slow-the-compiler-down test, I've also come up with some heuristics for union comparisons that could probably make this test specifically complete in linear time/comparisons.

Specifically, the "union of specific things with a generalized fallback member" pattern is very common. If we store the first target member that passes and check it first for subsequent source members, it can shortcut iteration in these scenarios and prevent a quadratic search. Similar element-index-carryover could also be used to handle corresponding-unions-but-missing-a-element better, like comparing A | B | D with A | B | C | D, or, more generally, any filtered union with the original. I'll probably put up a PR for that at some point.

Copy link
Member

Choose a reason for hiding this comment

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

Is that the same / similar to #47511?

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 don't think so, since that's talking about conditional type distribution and I'm just talking about relating two unions. Specifically, in that case, it's about how once you have selected both branch types (assuming they don't use the check type in them), you can stop distributing, since further results won't change the outcome. Similar naive complexity, though.

@sandersn sandersn added this to Not started in PR Backlog Aug 23, 2022
@sandersn sandersn moved this from Not started to Waiting on reviewers in PR Backlog Aug 30, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Author: Team For Uncommitted Bug PR for untriaged, rejected, closed or missing bug
Projects
PR Backlog
  
Waiting on reviewers
Development

Successfully merging this pull request may close these issues.

None yet

5 participants