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

Reuse Printers with common options #52382

Merged
merged 17 commits into from
Jan 25, 2023
Merged

Conversation

jakebailey
Copy link
Member

In #52350 I noticed that declarationEmitPrivatePromiseLikeInterface was running quite slowly.

I ran this single test through pprof and found that 20% of the time is spent just doing createPrinter.

image

With this change, the test goes from ~6s to ~4s on my machine, and now that call is gone:

image

It seems to me like we have a lot of printers created with static options, although I'm guessing a lot aren't in a hot path like this one.

@typescript-bot typescript-bot added Author: Team For Uncommitted Bug PR for untriaged, rejected, closed or missing bug labels Jan 24, 2023
@jakebailey
Copy link
Member Author

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jan 24, 2023

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

Update: The results are in!

src/compiler/checker.ts Outdated Show resolved Hide resolved
@jakebailey jakebailey changed the title [experiment] Pool Printers for reuse [experiment] Reuse Printers Jan 24, 2023
@jakebailey
Copy link
Member Author

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jan 24, 2023

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

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

Here they are:

Compiler

Comparison Report - main..52382
Metric main 52382 Delta Best Worst
Angular - node (v18.10.0, x64)
Memory used 359,659k (± 0.01%) 359,823k (± 0.01%) +165k (+ 0.05%) 359,786k 359,899k
Parse Time 3.93s (± 0.79%) 3.97s (± 0.67%) +0.04s (+ 0.98%) 3.93s 4.01s
Bind Time 1.17s (± 0.44%) 1.17s (± 0.47%) +0.00s (+ 0.14%) 1.17s 1.18s
Check Time 8.86s (± 0.35%) 8.86s (± 0.44%) +0.01s (+ 0.08%) 8.84s 8.94s
Emit Time 7.62s (± 0.84%) 7.60s (± 0.68%) -0.01s (- 0.18%) 7.52s 7.67s
Total Time 21.57s (± 0.49%) 21.61s (± 0.49%) +0.03s (+ 0.15%) 21.49s 21.79s
Compiler-Unions - node (v18.10.0, x64)
Memory used 193,506k (± 1.17%) 194,544k (± 1.52%) +1,038k (+ 0.54%) 192,586k 198,420k
Parse Time 1.63s (± 1.81%) 1.64s (± 2.06%) +0.01s (+ 0.72%) 1.59s 1.68s
Bind Time 0.79s (± 0.65%) 0.79s (± 0.65%) 0.00s ( 0.00%) 0.79s 0.80s
Check Time 9.66s (± 0.53%) 9.71s (± 0.57%) +0.06s (+ 0.59%) 9.67s 9.80s
Emit Time 2.80s (± 1.55%) 2.81s (± 1.06%) +0.01s (+ 0.36%) 2.78s 2.85s
Total Time 14.88s (± 0.48%) 14.95s (± 0.34%) +0.08s (+ 0.50%) 14.88s 15.02s
Monaco - node (v18.10.0, x64)
Memory used 343,954k (± 0.01%) 344,048k (± 0.01%) +94k (+ 0.03%) 343,982k 344,090k
Parse Time 2.95s (± 0.55%) 2.95s (± 0.89%) +0.00s (+ 0.17%) 2.92s 3.00s
Bind Time 1.04s (± 1.17%) 1.04s (± 1.22%) +0.00s (+ 0.32%) 1.02s 1.05s
Check Time 7.30s (± 0.46%) 7.27s (± 0.28%) -0.02s (- 0.32%) 7.24s 7.30s
Emit Time 4.36s (± 0.65%) 4.34s (± 0.83%) -0.02s (- 0.34%) 4.31s 4.39s
Total Time 15.64s (± 0.42%) 15.61s (± 0.28%) -0.03s (- 0.21%) 15.54s 15.66s
TFS - node (v18.10.0, x64)
Memory used 300,338k (± 0.01%) 300,337k (± 0.00%) -1k (- 0.00%) 300,322k 300,360k
Parse Time 2.26s (± 1.30%) 2.29s (± 2.60%) +0.03s (+ 1.26%) 2.22s 2.36s
Bind Time 1.17s (± 0.47%) 1.17s (± 0.88%) +0.01s (+ 0.72%) 1.16s 1.19s
Check Time 6.89s (± 0.52%) 6.93s (± 0.27%) +0.03s (+ 0.46%) 6.91s 6.96s
Emit Time 3.93s (± 0.84%) 3.97s (± 0.60%) +0.04s (+ 1.10%) 3.95s 4.01s
Total Time 14.24s (± 0.50%) 14.36s (± 0.51%) +0.12s (+ 0.83%) 14.27s 14.44s
material-ui - node (v18.10.0, x64)
Memory used 476,775k (± 0.02%) 476,816k (± 0.00%) +41k (+ 0.01%) 476,796k 476,858k
Parse Time 3.57s (± 0.46%) 3.57s (± 0.46%) +0.00s (+ 0.05%) 3.56s 3.59s
Bind Time 0.96s (± 0.57%) 0.97s (± 0.42%) +0.00s (+ 0.35%) 0.96s 0.97s
Check Time 17.14s (± 1.11%) 17.10s (± 0.45%) -0.04s (- 0.23%) 17.04s 17.25s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 21.68s (± 0.84%) 21.65s (± 0.36%) -0.03s (- 0.15%) 21.59s 21.80s
xstate - node (v18.10.0, x64)
Memory used 548,713k (± 0.02%) 548,748k (± 0.01%) +35k (+ 0.01%) 548,639k 548,861k
Parse Time 4.58s (± 0.56%) 4.58s (± 0.56%) +0.00s (+ 0.11%) 4.56s 4.62s
Bind Time 1.71s (± 0.68%) 1.71s (± 0.91%) -0.00s (- 0.10%) 1.68s 1.72s
Check Time 2.73s (± 0.46%) 2.73s (± 0.38%) +0.00s (+ 0.12%) 2.72s 2.75s
Emit Time 0.08s (± 4.99%) 0.08s (± 4.99%) +0.00s (+ 0.00%) 0.08s 0.09s
Total Time 9.11s (± 0.37%) 9.12s (± 0.38%) +0.01s (+ 0.11%) 9.06s 9.15s
Angular - node (v16.17.1, x64)
Memory used 359,034k (± 0.01%) 359,229k (± 0.01%) +196k (+ 0.05%) 359,200k 359,280k
Parse Time 4.18s (± 0.29%) 4.18s (± 0.29%) 0.00s ( 0.00%) 4.16s 4.19s
Bind Time 1.22s (± 0.62%) 1.23s (± 0.45%) +0.00s (+ 0.27%) 1.22s 1.23s
Check Time 9.55s (± 0.37%) 9.58s (± 0.36%) +0.03s (+ 0.33%) 9.54s 9.64s
Emit Time 8.10s (± 0.64%) 8.13s (± 0.57%) +0.04s (+ 0.45%) 8.04s 8.17s
Total Time 23.04s (± 0.35%) 23.12s (± 0.30%) +0.08s (+ 0.34%) 23.02s 23.23s
Compiler-Unions - node (v16.17.1, x64)
Memory used 194,229k (± 0.03%) 194,338k (± 0.04%) +109k (+ 0.06%) 194,209k 194,421k
Parse Time 1.80s (± 0.45%) 1.80s (± 0.46%) +0.01s (+ 0.46%) 1.80s 1.82s
Bind Time 0.85s (± 0.65%) 0.84s (± 0.75%) -0.01s (- 0.59%) 0.83s 0.85s
Check Time 10.35s (± 0.36%) 10.37s (± 0.39%) +0.03s (+ 0.24%) 10.33s 10.42s
Emit Time 3.04s (± 0.79%) 3.06s (± 0.64%) +0.02s (+ 0.71%) 3.04s 3.09s
Total Time 16.03s (± 0.40%) 16.08s (± 0.25%) +0.05s (+ 0.32%) 16.02s 16.13s
Monaco - node (v16.17.1, x64)
Memory used 343,223k (± 0.01%) 343,317k (± 0.01%) +94k (+ 0.03%) 343,254k 343,363k
Parse Time 3.16s (± 0.94%) 3.15s (± 1.11%) -0.01s (- 0.21%) 3.10s 3.20s
Bind Time 1.11s (± 0.47%) 1.11s (± 1.05%) +0.01s (+ 0.45%) 1.09s 1.12s
Check Time 7.89s (± 0.33%) 7.92s (± 0.28%) +0.03s (+ 0.36%) 7.89s 7.95s
Emit Time 4.56s (± 0.33%) 4.57s (± 0.51%) +0.01s (+ 0.22%) 4.54s 4.61s
Total Time 16.72s (± 0.13%) 16.75s (± 0.32%) +0.03s (+ 0.18%) 16.67s 16.82s
TFS - node (v16.17.1, x64)
Memory used 299,690k (± 0.00%) 299,709k (± 0.01%) +19k (+ 0.01%) 299,687k 299,746k
Parse Time 2.45s (± 0.82%) 2.47s (± 1.10%) +0.02s (+ 0.75%) 2.44s 2.51s
Bind Time 1.25s (± 0.44%) 1.26s (± 0.93%) +0.00s (+ 0.27%) 1.24s 1.27s
Check Time 7.50s (± 0.28%) 7.53s (± 0.28%) +0.04s (+ 0.49%) 7.50s 7.55s
Emit Time 4.24s (± 0.68%) 4.26s (± 0.83%) +0.02s (+ 0.47%) 4.20s 4.29s
Total Time 15.44s (± 0.26%) 15.52s (± 0.45%) +0.07s (+ 0.46%) 15.38s 15.57s
material-ui - node (v16.17.1, x64)
Memory used 476,074k (± 0.01%) 476,178k (± 0.02%) +104k (+ 0.02%) 476,052k 476,284k
Parse Time 3.72s (± 0.33%) 3.72s (± 0.52%) +0.01s (+ 0.18%) 3.69s 3.75s
Bind Time 1.02s (± 0.51%) 1.02s (± 0.00%) +0.00s (+ 0.33%) 1.02s 1.02s
Check Time 18.12s (± 0.75%) 18.13s (± 0.56%) +0.01s (+ 0.05%) 17.97s 18.23s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 22.86s (± 0.62%) 22.88s (± 0.45%) +0.02s (+ 0.07%) 22.71s 22.98s
xstate - node (v16.17.1, x64)
Memory used 546,268k (± 0.02%) 546,475k (± 0.03%) +206k (+ 0.04%) 546,314k 546,825k
Parse Time 4.76s (± 0.37%) 4.78s (± 0.39%) +0.02s (+ 0.42%) 4.76s 4.81s
Bind Time 1.85s (± 0.34%) 1.85s (± 0.53%) -0.00s (- 0.09%) 1.83s 1.86s
Check Time 2.96s (± 0.66%) 2.97s (± 0.51%) +0.01s (+ 0.34%) 2.94s 2.98s
Emit Time 0.09s (± 5.53%) 0.10s (± 5.76%) +0.00s (+ 1.79%) 0.09s 0.10s
Total Time 9.66s (± 0.33%) 9.69s (± 0.13%) +0.03s (+ 0.35%) 9.67s 9.71s
Angular - node (v14.15.1, x64)
Memory used 352,673k (± 0.01%) 352,877k (± 0.01%) +204k (+ 0.06%) 352,853k 352,896k
Parse Time 4.23s (± 0.49%) 4.22s (± 0.41%) -0.01s (- 0.28%) 4.19s 4.24s
Bind Time 1.28s (± 0.49%) 1.28s (± 0.65%) +0.00s (+ 0.39%) 1.28s 1.30s
Check Time 9.83s (± 0.33%) 9.88s (± 0.57%) +0.04s (+ 0.44%) 9.81s 9.97s
Emit Time 8.35s (± 0.28%) 8.41s (± 0.36%) +0.06s (+ 0.74%) 8.38s 8.44s
Total Time 23.71s (± 0.14%) 23.80s (± 0.32%) +0.09s (+ 0.40%) 23.72s 23.93s
Compiler-Unions - node (v14.15.1, x64)
Memory used 189,732k (± 0.67%) 189,729k (± 0.69%) -3k (- 0.00%) 189,083k 192,387k
Parse Time 1.84s (± 0.64%) 1.84s (± 0.57%) +0.01s (+ 0.36%) 1.83s 1.86s
Bind Time 0.85s (± 0.64%) 0.86s (± 0.94%) +0.01s (+ 0.97%) 0.85s 0.87s
Check Time 10.42s (± 0.38%) 10.41s (± 0.59%) -0.00s (- 0.02%) 10.33s 10.52s
Emit Time 3.34s (± 4.90%) 3.41s (± 3.79%) +0.07s (+ 2.00%) 3.15s 3.50s
Total Time 16.45s (± 0.95%) 16.53s (± 0.97%) +0.08s (+ 0.48%) 16.21s 16.65s
Monaco - node (v14.15.1, x64)
Memory used 337,999k (± 0.00%) 338,098k (± 0.00%) +99k (+ 0.03%) 338,080k 338,106k
Parse Time 3.21s (± 0.60%) 3.21s (± 1.39%) +0.00s (+ 0.05%) 3.17s 3.30s
Bind Time 1.11s (± 0.50%) 1.11s (± 0.94%) +0.01s (+ 0.90%) 1.10s 1.13s
Check Time 8.26s (± 0.36%) 8.26s (± 0.55%) +0.01s (+ 0.10%) 8.22s 8.35s
Emit Time 4.78s (± 0.59%) 4.80s (± 0.63%) +0.02s (+ 0.49%) 4.77s 4.86s
Total Time 17.35s (± 0.25%) 17.39s (± 0.37%) +0.04s (+ 0.21%) 17.31s 17.50s
TFS - node (v14.15.1, x64)
Memory used 294,507k (± 0.00%) 294,537k (± 0.01%) +30k (+ 0.01%) 294,518k 294,568k
Parse Time 2.75s (± 0.70%) 2.75s (± 0.78%) -0.00s (- 0.12%) 2.71s 2.77s
Bind Time 1.11s (± 0.99%) 1.11s (± 0.68%) +0.00s (+ 0.15%) 1.10s 1.12s
Check Time 7.80s (± 0.25%) 7.83s (± 0.46%) +0.04s (+ 0.47%) 7.79s 7.87s
Emit Time 4.62s (± 0.37%) 4.62s (± 1.00%) +0.00s (+ 0.04%) 4.59s 4.71s
Total Time 16.28s (± 0.18%) 16.32s (± 0.39%) +0.04s (+ 0.21%) 16.26s 16.44s
material-ui - node (v14.15.1, x64)
Memory used 471,508k (± 0.00%) 471,564k (± 0.00%) +56k (+ 0.01%) 471,531k 471,588k
Parse Time 3.92s (± 0.28%) 3.94s (± 0.57%) +0.02s (+ 0.60%) 3.92s 3.98s
Bind Time 1.05s (± 0.49%) 1.04s (± 0.52%) -0.00s (- 0.16%) 1.04s 1.05s
Check Time 19.00s (± 0.54%) 18.98s (± 0.25%) -0.02s (- 0.09%) 18.91s 19.05s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 23.97s (± 0.40%) 23.97s (± 0.20%) +0.00s (+ 0.01%) 23.92s 24.03s
xstate - node (v14.15.1, x64)
Memory used 534,331k (± 0.01%) 534,521k (± 0.00%) +191k (+ 0.04%) 534,495k 534,563k
Parse Time 5.14s (± 0.83%) 5.17s (± 0.90%) +0.03s (+ 0.52%) 5.11s 5.22s
Bind Time 1.71s (± 0.64%) 1.72s (± 0.47%) +0.01s (+ 0.78%) 1.71s 1.73s
Check Time 3.09s (± 0.52%) 3.09s (± 0.86%) +0.00s (+ 0.05%) 3.06s 3.12s
Emit Time 0.10s (± 0.00%) 0.10s (± 4.01%) +0.00s (+ 1.67%) 0.10s 0.11s
Total Time 10.04s (± 0.49%) 10.08s (± 0.66%) +0.04s (+ 0.43%) 10.01s 10.15s
System
Machine Namets-ci-ubuntu
Platformlinux 5.4.0-135-generic
Architecturex64
Available Memory16 GB
Available Memory15 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v18.10.0, x64)
  • node (v16.17.1, x64)
  • node (v14.15.1, x64)
Scenarios
  • Angular - node (v18.10.0, x64)
  • Angular - node (v16.17.1, x64)
  • Angular - node (v14.15.1, x64)
  • Compiler-Unions - node (v18.10.0, x64)
  • Compiler-Unions - node (v16.17.1, x64)
  • Compiler-Unions - node (v14.15.1, x64)
  • Monaco - node (v18.10.0, x64)
  • Monaco - node (v16.17.1, x64)
  • Monaco - node (v14.15.1, x64)
  • TFS - node (v18.10.0, x64)
  • TFS - node (v16.17.1, x64)
  • TFS - node (v14.15.1, x64)
  • material-ui - node (v18.10.0, x64)
  • material-ui - node (v16.17.1, x64)
  • material-ui - node (v14.15.1, x64)
  • xstate - node (v18.10.0, x64)
  • xstate - node (v16.17.1, x64)
  • xstate - node (v14.15.1, x64)
Benchmark Name Iterations
Current 52382 6
Baseline main 6

TSServer

Comparison Report - main..52382
Metric main 52382 Delta Best Worst
Compiler-UnionsTSServer - node (v18.10.0, x64)
Req 1 - updateOpen 2,500ms (± 1.25%) 2,512ms (± 1.42%) +12ms (+ 0.47%) 2,471ms 2,546ms
Req 2 - geterr 5,502ms (± 0.46%) 5,517ms (± 0.38%) +16ms (+ 0.28%) 5,485ms 5,539ms
Req 3 - references 365ms (± 1.62%) 370ms (± 1.03%) +5ms (+ 1.37%) 365ms 373ms
Req 4 - navto 281ms (± 1.12%) 281ms (± 1.05%) +1ms (+ 0.30%) 278ms 285ms
Req 5 - completionInfo count 1,356 (± 0.00%) 1,356 (± 0.00%) 0 ( 0.00%) 1,356 1,356
Req 5 - completionInfo 72ms (± 9.45%) 67ms (± 2.57%) 🟩-5ms (- 6.96%) 65ms 70ms
CompilerTSServer - node (v18.10.0, x64)
Req 1 - updateOpen 2,714ms (± 1.16%) 2,731ms (± 0.95%) +16ms (+ 0.60%) 2,701ms 2,764ms
Req 2 - geterr 4,051ms (± 0.45%) 4,054ms (± 0.44%) +2ms (+ 0.06%) 4,025ms 4,076ms
Req 3 - references 367ms (± 0.56%) 370ms (± 0.57%) +3ms (+ 0.73%) 367ms 373ms
Req 4 - navto 294ms (± 0.66%) 294ms (± 0.35%) -0ms (- 0.06%) 292ms 295ms
Req 5 - completionInfo count 1,518 (± 0.00%) 1,518 (± 0.00%) 0 ( 0.00%) 1,518 1,518
Req 5 - completionInfo 67ms (± 0.77%) 66ms (± 0.78%) -0ms (- 0.50%) 66ms 67ms
xstateTSServer - node (v18.10.0, x64)
Req 1 - updateOpen 3,490ms (± 0.59%) 3,485ms (± 0.75%) -5ms (- 0.14%) 3,457ms 3,529ms
Req 2 - geterr 1,405ms (± 0.75%) 1,403ms (± 0.96%) -2ms (- 0.17%) 1,390ms 1,428ms
Req 3 - references 106ms (± 1.56%) 106ms (± 1.29%) +0ms (+ 0.16%) 104ms 107ms
Req 4 - navto 355ms (± 0.50%) 356ms (± 0.46%) +1ms (+ 0.38%) 355ms 359ms
Req 5 - completionInfo count 3,171 (± 0.00%) 3,171 (± 0.00%) 0 ( 0.00%) 3,171 3,171
Req 5 - completionInfo 466ms (± 1.22%) 466ms (± 0.81%) -1ms (- 0.14%) 461ms 471ms
Compiler-UnionsTSServer - node (v16.17.1, x64)
Req 1 - updateOpen 2,785ms (± 0.51%) 2,791ms (± 0.41%) +6ms (+ 0.22%) 2,775ms 2,806ms
Req 2 - geterr 5,891ms (± 0.65%) 5,910ms (± 0.64%) +19ms (+ 0.32%) 5,860ms 5,954ms
Req 3 - references 379ms (± 2.10%) 380ms (± 1.00%) +0ms (+ 0.04%) 376ms 386ms
Req 4 - navto 279ms (± 0.67%) 280ms (± 1.32%) +2ms (+ 0.60%) 275ms 286ms
Req 5 - completionInfo count 1,356 (± 0.00%) 1,356 (± 0.00%) 0 ( 0.00%) 1,356 1,356
Req 5 - completionInfo 74ms (± 7.16%) 75ms (±10.03%) +2ms (+ 2.04%) 70ms 90ms
CompilerTSServer - node (v16.17.1, x64)
Req 1 - updateOpen 2,926ms (± 0.17%) 2,932ms (± 0.44%) +6ms (+ 0.19%) 2,918ms 2,953ms
Req 2 - geterr 4,385ms (± 0.51%) 4,392ms (± 0.47%) +7ms (+ 0.17%) 4,365ms 4,423ms
Req 3 - references 381ms (± 0.73%) 384ms (± 0.86%) +3ms (+ 0.83%) 379ms 388ms
Req 4 - navto 288ms (± 0.49%) 289ms (± 0.51%) +1ms (+ 0.41%) 288ms 292ms
Req 5 - completionInfo count 1,518 (± 0.00%) 1,518 (± 0.00%) 0 ( 0.00%) 1,518 1,518
Req 5 - completionInfo 72ms (± 0.77%) 72ms (± 1.14%) +0ms (+ 0.23%) 71ms 73ms
xstateTSServer - node (v16.17.1, x64)
Req 1 - updateOpen 3,634ms (± 0.42%) 3,629ms (± 0.23%) -6ms (- 0.16%) 3,618ms 3,638ms
Req 2 - geterr 1,561ms (± 1.46%) 1,551ms (± 0.78%) -11ms (- 0.68%) 1,538ms 1,570ms
Req 3 - references 111ms (± 1.35%) 112ms (± 1.35%) +0ms (+ 0.30%) 109ms 113ms
Req 4 - navto 332ms (± 0.35%) 341ms (± 0.96%) +10ms (+ 2.86%) 338ms 347ms
Req 5 - completionInfo count 3,171 (± 0.00%) 3,171 (± 0.00%) 0 ( 0.00%) 3,171 3,171
Req 5 - completionInfo 480ms (± 0.77%) 478ms (± 0.81%) -2ms (- 0.35%) 473ms 485ms
Compiler-UnionsTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 2,897ms (± 0.23%) 2,901ms (± 0.62%) +4ms (+ 0.12%) 2,879ms 2,934ms
Req 2 - geterr 6,254ms (± 0.98%) 6,299ms (± 1.11%) +45ms (+ 0.72%) 6,229ms 6,404ms
Req 3 - references 391ms (± 0.38%) 391ms (± 0.77%) -0ms (- 0.04%) 386ms 395ms
Req 4 - navto 280ms (± 0.62%) 284ms (± 1.36%) +4ms (+ 1.25%) 279ms 289ms
Req 5 - completionInfo count 1,356 (± 0.00%) 1,356 (± 0.00%) 0 ( 0.00%) 1,356 1,356
Req 5 - completionInfo 85ms (±11.56%) 88ms (± 6.99%) +3ms (+ 3.33%) 79ms 93ms
CompilerTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 3,063ms (± 0.21%) 3,081ms (± 0.81%) +18ms (+ 0.59%) 3,063ms 3,131ms
Req 2 - geterr 4,685ms (± 0.39%) 4,687ms (± 0.45%) +2ms (+ 0.04%) 4,657ms 4,712ms
Req 3 - references 413ms (± 1.06%) 410ms (± 1.18%) -4ms (- 0.93%) 404ms 416ms
Req 4 - navto 295ms (± 0.70%) 297ms (± 0.50%) +2ms (+ 0.79%) 295ms 299ms
Req 5 - completionInfo count 1,518 (± 0.00%) 1,518 (± 0.00%) 0 ( 0.00%) 1,518 1,518
Req 5 - completionInfo 86ms (± 4.18%) 90ms (± 4.99%) +4ms (+ 4.05%) 88ms 99ms
xstateTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 3,959ms (± 0.48%) 3,965ms (± 0.44%) +6ms (+ 0.14%) 3,935ms 3,986ms
Req 2 - geterr 1,517ms (± 1.70%) 1,523ms (± 1.73%) +6ms (+ 0.37%) 1,491ms 1,558ms
Req 3 - references 135ms (± 1.79%) 131ms (± 2.83%) 🟩-5ms (- 3.33%) 127ms 137ms
Req 4 - navto 372ms (± 1.05%) 374ms (± 0.73%) +2ms (+ 0.63%) 370ms 377ms
Req 5 - completionInfo count 3,171 (± 0.00%) 3,171 (± 0.00%) 0 ( 0.00%) 3,171 3,171
Req 5 - completionInfo 506ms (± 1.03%) 497ms (± 2.79%) -9ms (- 1.81%) 484ms 522ms
System
Machine Namets-ci-ubuntu
Platformlinux 5.4.0-135-generic
Architecturex64
Available Memory16 GB
Available Memory15 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v18.10.0, x64)
  • node (v16.17.1, x64)
  • node (v14.15.1, x64)
Scenarios
  • Compiler-UnionsTSServer - node (v18.10.0, x64)
  • Compiler-UnionsTSServer - node (v16.17.1, x64)
  • Compiler-UnionsTSServer - node (v14.15.1, x64)
  • CompilerTSServer - node (v18.10.0, x64)
  • CompilerTSServer - node (v16.17.1, x64)
  • CompilerTSServer - node (v14.15.1, x64)
  • xstateTSServer - node (v18.10.0, x64)
  • xstateTSServer - node (v16.17.1, x64)
  • xstateTSServer - node (v14.15.1, x64)
Benchmark Name Iterations
Current 52382 6
Baseline main 6

Startup

Comparison Report - main..52382
Metric main 52382 Delta Best Worst
tsc-startup - node (v16.17.1, x64)
Execution time 141.74ms (± 0.21%) 142.43ms (± 0.19%) +0.69ms (+ 0.49%) 141.76ms 146.30ms
tsserver-startup - node (v16.17.1, x64)
Execution time 225.11ms (± 0.14%) 227.03ms (± 0.17%) +1.92ms (+ 0.85%) 225.98ms 231.60ms
tsserverlibrary-startup - node (v16.17.1, x64)
Execution time 227.56ms (± 0.16%) 229.37ms (± 0.22%) +1.81ms (+ 0.80%) 228.22ms 236.41ms
typescript-startup - node (v16.17.1, x64)
Execution time 208.64ms (± 0.19%) 210.16ms (± 0.18%) +1.52ms (+ 0.73%) 209.15ms 214.73ms
System
Machine Namets-ci-ubuntu
Platformlinux 5.4.0-135-generic
Architecturex64
Available Memory16 GB
Available Memory15 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v16.17.1, x64)
Scenarios
  • tsc-startup - node (v16.17.1, x64)
  • tsserver-startup - node (v16.17.1, x64)
  • tsserverlibrary-startup - node (v16.17.1, x64)
  • typescript-startup - node (v16.17.1, x64)
Benchmark Name Iterations
Current 52382 6
Baseline main 6

Developer Information:

Download Benchmark

@typescript-bot
Copy link
Collaborator

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

Here they are:

Compiler

Comparison Report - main..52382
Metric main 52382 Delta Best Worst
Angular - node (v18.10.0, x64)
Memory used 359,659k (± 0.01%) 359,828k (± 0.02%) +170k (+ 0.05%) 359,728k 359,896k
Parse Time 3.93s (± 0.79%) 3.96s (± 0.38%) +0.03s (+ 0.72%) 3.94s 3.98s
Bind Time 1.17s (± 0.44%) 1.17s (± 0.47%) +0.00s (+ 0.14%) 1.17s 1.18s
Check Time 8.86s (± 0.35%) 8.62s (± 0.47%) -0.24s (- 2.69%) 8.56s 8.67s
Emit Time 7.62s (± 0.84%) 7.63s (± 0.31%) +0.01s (+ 0.13%) 7.60s 7.65s
Total Time 21.57s (± 0.49%) 21.38s (± 0.21%) -0.20s (- 0.92%) 21.32s 21.42s
Compiler-Unions - node (v18.10.0, x64)
Memory used 193,506k (± 1.17%) 192,499k (± 0.08%) -1,007k (- 0.52%) 192,298k 192,631k
Parse Time 1.63s (± 1.81%) 1.63s (± 1.79%) +0.01s (+ 0.31%) 1.59s 1.66s
Bind Time 0.79s (± 0.65%) 0.79s (± 0.69%) +0.00s (+ 0.21%) 0.79s 0.80s
Check Time 9.66s (± 0.53%) 9.65s (± 0.66%) -0.00s (- 0.02%) 9.60s 9.75s
Emit Time 2.80s (± 1.55%) 2.89s (± 5.19%) +0.09s (+ 3.21%) 2.78s 3.09s
Total Time 14.88s (± 0.48%) 14.97s (± 0.78%) +0.10s (+ 0.64%) 14.86s 15.14s
Monaco - node (v18.10.0, x64)
Memory used 343,954k (± 0.01%) 343,971k (± 0.01%) +17k (+ 0.00%) 343,931k 344,033k
Parse Time 2.95s (± 0.55%) 2.94s (± 1.43%) -0.01s (- 0.23%) 2.87s 2.98s
Bind Time 1.04s (± 1.17%) 1.04s (± 0.79%) 0.00s ( 0.00%) 1.03s 1.05s
Check Time 7.30s (± 0.46%) 7.06s (± 0.44%) 🟩-0.24s (- 3.27%) 7.01s 7.09s
Emit Time 4.36s (± 0.65%) 4.32s (± 0.69%) -0.04s (- 0.96%) 4.29s 4.37s
Total Time 15.64s (± 0.42%) 15.36s (± 0.55%) -0.28s (- 1.80%) 15.21s 15.43s
TFS - node (v18.10.0, x64)
Memory used 300,338k (± 0.01%) 300,386k (± 0.00%) +47k (+ 0.02%) 300,378k 300,394k
Parse Time 2.26s (± 1.30%) 2.27s (± 2.11%) +0.02s (+ 0.74%) 2.21s 2.34s
Bind Time 1.17s (± 0.47%) 1.17s (± 0.64%) +0.01s (+ 0.57%) 1.16s 1.18s
Check Time 6.89s (± 0.52%) 6.55s (± 0.51%) 🟩-0.35s (- 5.05%) 6.50s 6.60s
Emit Time 3.93s (± 0.84%) 3.92s (± 1.22%) -0.01s (- 0.25%) 3.87s 3.99s
Total Time 14.24s (± 0.50%) 13.91s (± 0.64%) -0.34s (- 2.38%) 13.81s 14.02s
material-ui - node (v18.10.0, x64)
Memory used 476,775k (± 0.02%) 476,730k (± 0.00%) -45k (- 0.01%) 476,701k 476,755k
Parse Time 3.57s (± 0.46%) 3.54s (± 0.92%) -0.03s (- 0.89%) 3.49s 3.58s
Bind Time 0.96s (± 0.57%) 0.97s (± 0.78%) +0.00s (+ 0.35%) 0.96s 0.98s
Check Time 17.14s (± 1.11%) 17.09s (± 0.31%) -0.05s (- 0.30%) 17.02s 17.15s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 21.68s (± 0.84%) 21.60s (± 0.21%) -0.08s (- 0.38%) 21.53s 21.66s
xstate - node (v18.10.0, x64)
Memory used 548,713k (± 0.02%) 548,646k (± 0.04%) -68k (- 0.01%) 548,452k 548,994k
Parse Time 4.58s (± 0.56%) 4.55s (± 0.50%) -0.03s (- 0.62%) 4.51s 4.57s
Bind Time 1.71s (± 0.68%) 1.71s (± 1.03%) -0.01s (- 0.29%) 1.69s 1.74s
Check Time 2.73s (± 0.46%) 2.72s (± 1.18%) -0.01s (- 0.18%) 2.68s 2.77s
Emit Time 0.08s (± 4.99%) 0.08s (± 6.19%) +0.00s (+ 2.04%) 0.08s 0.09s
Total Time 9.11s (± 0.37%) 9.07s (± 0.29%) -0.04s (- 0.40%) 9.02s 9.09s
Angular - node (v16.17.1, x64)
Memory used 359,034k (± 0.01%) 359,187k (± 0.01%) +153k (+ 0.04%) 359,156k 359,232k
Parse Time 4.18s (± 0.29%) 4.18s (± 0.34%) +0.00s (+ 0.08%) 4.16s 4.20s
Bind Time 1.22s (± 0.62%) 1.22s (± 0.52%) -0.00s (- 0.14%) 1.21s 1.23s
Check Time 9.55s (± 0.37%) 9.37s (± 0.39%) -0.18s (- 1.89%) 9.32s 9.41s
Emit Time 8.10s (± 0.64%) 8.07s (± 0.68%) -0.02s (- 0.27%) 7.99s 8.15s
Total Time 23.04s (± 0.35%) 22.84s (± 0.38%) -0.20s (- 0.86%) 22.70s 22.96s
Compiler-Unions - node (v16.17.1, x64)
Memory used 194,229k (± 0.03%) 194,871k (± 0.68%) +642k (+ 0.33%) 194,276k 197,570k
Parse Time 1.80s (± 0.45%) 1.80s (± 0.45%) +0.01s (+ 0.37%) 1.79s 1.81s
Bind Time 0.85s (± 0.65%) 0.85s (± 0.61%) +0.00s (+ 0.20%) 0.84s 0.85s
Check Time 10.35s (± 0.36%) 10.37s (± 0.17%) +0.02s (+ 0.21%) 10.34s 10.39s
Emit Time 3.04s (± 0.79%) 3.05s (± 0.74%) +0.01s (+ 0.44%) 3.02s 3.08s
Total Time 16.03s (± 0.40%) 16.07s (± 0.08%) +0.04s (+ 0.26%) 16.06s 16.09s
Monaco - node (v16.17.1, x64)
Memory used 343,223k (± 0.01%) 343,261k (± 0.01%) +38k (+ 0.01%) 343,230k 343,291k
Parse Time 3.16s (± 0.94%) 3.16s (± 0.95%) -0.00s (- 0.11%) 3.11s 3.20s
Bind Time 1.11s (± 0.47%) 1.11s (± 0.93%) 0.00s ( 0.00%) 1.09s 1.12s
Check Time 7.89s (± 0.33%) 7.71s (± 0.38%) -0.19s (- 2.34%) 7.66s 7.74s
Emit Time 4.56s (± 0.33%) 4.51s (± 0.52%) -0.04s (- 0.95%) 4.48s 4.54s
Total Time 16.72s (± 0.13%) 16.49s (± 0.33%) -0.23s (- 1.39%) 16.40s 16.55s
TFS - node (v16.17.1, x64)
Memory used 299,690k (± 0.00%) 299,772k (± 0.01%) +82k (+ 0.03%) 299,755k 299,794k
Parse Time 2.45s (± 0.82%) 2.49s (± 1.72%) +0.04s (+ 1.50%) 2.44s 2.54s
Bind Time 1.25s (± 0.44%) 1.25s (± 0.78%) -0.00s (- 0.27%) 1.24s 1.26s
Check Time 7.50s (± 0.28%) 7.20s (± 0.27%) 🟩-0.30s (- 3.96%) 7.17s 7.22s
Emit Time 4.24s (± 0.68%) 4.22s (± 0.51%) -0.02s (- 0.43%) 4.19s 4.25s
Total Time 15.44s (± 0.26%) 15.16s (± 0.25%) -0.28s (- 1.82%) 15.11s 15.22s
material-ui - node (v16.17.1, x64)
Memory used 476,074k (± 0.01%) 476,039k (± 0.01%) -35k (- 0.01%) 475,989k 476,170k
Parse Time 3.72s (± 0.33%) 3.72s (± 0.24%) +0.00s (+ 0.13%) 3.71s 3.73s
Bind Time 1.02s (± 0.51%) 1.02s (± 0.40%) +0.00s (+ 0.49%) 1.02s 1.03s
Check Time 18.12s (± 0.75%) 18.13s (± 0.51%) +0.00s (+ 0.02%) 18.06s 18.28s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 22.86s (± 0.62%) 22.87s (± 0.44%) +0.01s (+ 0.04%) 22.79s 23.03s
xstate - node (v16.17.1, x64)
Memory used 546,268k (± 0.02%) 546,281k (± 0.02%) +12k (+ 0.00%) 546,180k 546,443k
Parse Time 4.76s (± 0.37%) 4.74s (± 0.17%) -0.01s (- 0.28%) 4.73s 4.75s
Bind Time 1.85s (± 0.34%) 1.85s (± 0.22%) -0.00s (- 0.09%) 1.84s 1.85s
Check Time 2.96s (± 0.66%) 2.97s (± 0.30%) +0.01s (+ 0.45%) 2.96s 2.98s
Emit Time 0.09s (± 5.53%) 0.09s (± 0.00%) 🟩-0.00s (- 3.57%) 0.09s 0.09s
Total Time 9.66s (± 0.33%) 9.65s (± 0.16%) -0.01s (- 0.10%) 9.62s 9.66s
Angular - node (v14.15.1, x64)
Memory used 352,673k (± 0.01%) 352,825k (± 0.01%) +153k (+ 0.04%) 352,792k 352,868k
Parse Time 4.23s (± 0.49%) 4.22s (± 0.38%) -0.01s (- 0.28%) 4.20s 4.24s
Bind Time 1.28s (± 0.49%) 1.29s (± 0.43%) +0.01s (+ 0.39%) 1.28s 1.29s
Check Time 9.83s (± 0.33%) 9.65s (± 0.61%) -0.18s (- 1.88%) 9.60s 9.76s
Emit Time 8.35s (± 0.28%) 8.37s (± 0.75%) +0.01s (+ 0.18%) 8.30s 8.46s
Total Time 23.71s (± 0.14%) 23.52s (± 0.48%) -0.19s (- 0.78%) 23.42s 23.71s
Compiler-Unions - node (v14.15.1, x64)
Memory used 189,732k (± 0.67%) 189,778k (± 0.73%) +46k (+ 0.02%) 189,044k 192,591k
Parse Time 1.84s (± 0.64%) 1.84s (± 0.41%) 0.00s ( 0.00%) 1.83s 1.85s
Bind Time 0.85s (± 0.64%) 0.86s (± 0.00%) +0.01s (+ 0.58%) 0.86s 0.86s
Check Time 10.42s (± 0.38%) 10.39s (± 0.28%) -0.03s (- 0.27%) 10.36s 10.44s
Emit Time 3.34s (± 4.90%) 3.32s (± 5.50%) -0.01s (- 0.45%) 3.15s 3.54s
Total Time 16.45s (± 0.95%) 16.41s (± 1.04%) -0.04s (- 0.23%) 16.20s 16.60s
Monaco - node (v14.15.1, x64)
Memory used 337,999k (± 0.00%) 338,033k (± 0.00%) +34k (+ 0.01%) 338,019k 338,048k
Parse Time 3.21s (± 0.60%) 3.24s (± 0.81%) +0.03s (+ 0.83%) 3.21s 3.28s
Bind Time 1.11s (± 0.50%) 1.12s (± 0.92%) +0.01s (+ 1.06%) 1.11s 1.13s
Check Time 8.26s (± 0.36%) 8.03s (± 0.58%) -0.22s (- 2.67%) 7.99s 8.12s
Emit Time 4.78s (± 0.59%) 4.75s (± 0.70%) -0.03s (- 0.56%) 4.71s 4.81s
Total Time 17.35s (± 0.25%) 17.14s (± 0.40%) -0.21s (- 1.21%) 17.07s 17.27s
TFS - node (v14.15.1, x64)
Memory used 294,507k (± 0.00%) 294,591k (± 0.01%) +84k (+ 0.03%) 294,563k 294,621k
Parse Time 2.75s (± 0.70%) 2.75s (± 0.51%) -0.00s (- 0.06%) 2.73s 2.77s
Bind Time 1.11s (± 0.99%) 1.11s (± 0.89%) -0.00s (- 0.15%) 1.09s 1.12s
Check Time 7.80s (± 0.25%) 7.51s (± 0.37%) 🟩-0.29s (- 3.72%) 7.48s 7.56s
Emit Time 4.62s (± 0.37%) 4.65s (± 0.57%) +0.03s (+ 0.65%) 4.61s 4.68s
Total Time 16.28s (± 0.18%) 16.02s (± 0.29%) -0.27s (- 1.64%) 15.96s 16.09s
material-ui - node (v14.15.1, x64)
Memory used 471,508k (± 0.00%) 471,546k (± 0.00%) +38k (+ 0.01%) 471,527k 471,575k
Parse Time 3.92s (± 0.28%) 3.91s (± 0.44%) -0.01s (- 0.30%) 3.89s 3.93s
Bind Time 1.05s (± 0.49%) 1.04s (± 0.80%) -0.00s (- 0.16%) 1.03s 1.05s
Check Time 19.00s (± 0.54%) 19.00s (± 0.26%) +0.00s (+ 0.02%) 18.93s 19.07s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 23.97s (± 0.40%) 23.96s (± 0.18%) -0.01s (- 0.03%) 23.91s 24.01s
xstate - node (v14.15.1, x64)
Memory used 534,331k (± 0.01%) 534,451k (± 0.01%) +120k (+ 0.02%) 534,378k 534,496k
Parse Time 5.14s (± 0.83%) 5.16s (± 0.80%) +0.01s (+ 0.29%) 5.11s 5.21s
Bind Time 1.71s (± 0.64%) 1.71s (± 1.13%) -0.00s (- 0.10%) 1.69s 1.74s
Check Time 3.09s (± 0.52%) 3.08s (± 0.69%) -0.01s (- 0.32%) 3.06s 3.11s
Emit Time 0.10s (± 0.00%) 0.10s (± 0.00%) 0.00s ( 0.00%) 0.10s 0.10s
Total Time 10.04s (± 0.49%) 10.04s (± 0.51%) +0.00s (+ 0.03%) 9.96s 10.11s
System
Machine Namets-ci-ubuntu
Platformlinux 5.4.0-135-generic
Architecturex64
Available Memory16 GB
Available Memory15 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v18.10.0, x64)
  • node (v16.17.1, x64)
  • node (v14.15.1, x64)
Scenarios
  • Angular - node (v18.10.0, x64)
  • Angular - node (v16.17.1, x64)
  • Angular - node (v14.15.1, x64)
  • Compiler-Unions - node (v18.10.0, x64)
  • Compiler-Unions - node (v16.17.1, x64)
  • Compiler-Unions - node (v14.15.1, x64)
  • Monaco - node (v18.10.0, x64)
  • Monaco - node (v16.17.1, x64)
  • Monaco - node (v14.15.1, x64)
  • TFS - node (v18.10.0, x64)
  • TFS - node (v16.17.1, x64)
  • TFS - node (v14.15.1, x64)
  • material-ui - node (v18.10.0, x64)
  • material-ui - node (v16.17.1, x64)
  • material-ui - node (v14.15.1, x64)
  • xstate - node (v18.10.0, x64)
  • xstate - node (v16.17.1, x64)
  • xstate - node (v14.15.1, x64)
Benchmark Name Iterations
Current 52382 6
Baseline main 6

TSServer

Comparison Report - main..52382
Metric main 52382 Delta Best Worst
Compiler-UnionsTSServer - node (v18.10.0, x64)
Req 1 - updateOpen 2,500ms (± 1.25%) 2,502ms (± 2.02%) +2ms (+ 0.07%) 2,462ms 2,588ms
Req 2 - geterr 5,502ms (± 0.46%) 5,519ms (± 0.57%) +17ms (+ 0.32%) 5,475ms 5,562ms
Req 3 - references 365ms (± 1.62%) 366ms (± 0.92%) +2ms (+ 0.41%) 364ms 373ms
Req 4 - navto 281ms (± 1.12%) 284ms (± 0.14%) +4ms (+ 1.31%) 284ms 285ms
Req 5 - completionInfo count 1,356 (± 0.00%) 1,356 (± 0.00%) 0 ( 0.00%) 1,356 1,356
Req 5 - completionInfo 72ms (± 9.45%) 67ms (± 2.62%) 🟩-5ms (- 7.19%) 65ms 70ms
CompilerTSServer - node (v18.10.0, x64)
Req 1 - updateOpen 2,714ms (± 1.16%) 2,727ms (± 1.25%) +13ms (+ 0.48%) 2,691ms 2,774ms
Req 2 - geterr 4,051ms (± 0.45%) 4,063ms (± 0.28%) +12ms (+ 0.29%) 4,053ms 4,078ms
Req 3 - references 367ms (± 0.56%) 369ms (± 0.45%) +2ms (+ 0.45%) 367ms 371ms
Req 4 - navto 294ms (± 0.66%) 296ms (± 0.74%) +2ms (+ 0.74%) 293ms 299ms
Req 5 - completionInfo count 1,518 (± 0.00%) 1,518 (± 0.00%) 0 ( 0.00%) 1,518 1,518
Req 5 - completionInfo 67ms (± 0.77%) 80ms (± 5.60%) +14ms (+20.50%) 73ms 85ms
xstateTSServer - node (v18.10.0, x64)
Req 1 - updateOpen 3,490ms (± 0.59%) 3,498ms (± 0.77%) +9ms (+ 0.24%) 3,473ms 3,541ms
Req 2 - geterr 1,405ms (± 0.75%) 1,418ms (± 0.50%) +13ms (+ 0.90%) 1,408ms 1,430ms
Req 3 - references 106ms (± 1.56%) 106ms (± 2.10%) +0ms (+ 0.32%) 103ms 108ms
Req 4 - navto 355ms (± 0.50%) 357ms (± 0.59%) +2ms (+ 0.56%) 354ms 360ms
Req 5 - completionInfo count 3,171 (± 0.00%) 3,171 (± 0.00%) 0 ( 0.00%) 3,171 3,171
Req 5 - completionInfo 466ms (± 1.22%) 463ms (± 1.16%) -3ms (- 0.68%) 453ms 468ms
Compiler-UnionsTSServer - node (v16.17.1, x64)
Req 1 - updateOpen 2,785ms (± 0.51%) 2,783ms (± 0.34%) -2ms (- 0.08%) 2,775ms 2,795ms
Req 2 - geterr 5,891ms (± 0.65%) 5,875ms (± 0.48%) -16ms (- 0.27%) 5,837ms 5,906ms
Req 3 - references 379ms (± 2.10%) 376ms (± 1.54%) -3ms (- 0.79%) 368ms 383ms
Req 4 - navto 279ms (± 0.67%) 277ms (± 0.85%) -2ms (- 0.54%) 274ms 280ms
Req 5 - completionInfo count 1,356 (± 0.00%) 1,356 (± 0.00%) 0 ( 0.00%) 1,356 1,356
Req 5 - completionInfo 74ms (± 7.16%) 75ms (± 8.78%) +2ms (+ 2.26%) 69ms 87ms
CompilerTSServer - node (v16.17.1, x64)
Req 1 - updateOpen 2,926ms (± 0.17%) 2,939ms (± 0.85%) +13ms (+ 0.45%) 2,908ms 2,984ms
Req 2 - geterr 4,385ms (± 0.51%) 4,389ms (± 0.46%) +5ms (+ 0.11%) 4,370ms 4,422ms
Req 3 - references 381ms (± 0.73%) 381ms (± 0.51%) 0ms ( 0.00%) 378ms 383ms
Req 4 - navto 288ms (± 0.49%) 288ms (± 0.34%) -0ms (- 0.06%) 287ms 289ms
Req 5 - completionInfo count 1,518 (± 0.00%) 1,518 (± 0.00%) 0 ( 0.00%) 1,518 1,518
Req 5 - completionInfo 72ms (± 0.77%) 71ms (± 1.06%) -0ms (- 0.47%) 70ms 72ms
xstateTSServer - node (v16.17.1, x64)
Req 1 - updateOpen 3,634ms (± 0.42%) 3,631ms (± 0.17%) -4ms (- 0.10%) 3,623ms 3,639ms
Req 2 - geterr 1,561ms (± 1.46%) 1,553ms (± 0.96%) -8ms (- 0.53%) 1,534ms 1,578ms
Req 3 - references 111ms (± 1.35%) 111ms (± 1.05%) -1ms (- 0.45%) 110ms 113ms
Req 4 - navto 332ms (± 0.35%) 341ms (± 0.40%) +9ms (+ 2.61%) 339ms 342ms
Req 5 - completionInfo count 3,171 (± 0.00%) 3,171 (± 0.00%) 0 ( 0.00%) 3,171 3,171
Req 5 - completionInfo 480ms (± 0.77%) 480ms (± 0.88%) -0ms (- 0.07%) 475ms 487ms
Compiler-UnionsTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 2,897ms (± 0.23%) 2,898ms (± 0.42%) +0ms (+ 0.01%) 2,879ms 2,916ms
Req 2 - geterr 6,254ms (± 0.98%) 6,272ms (± 0.91%) +18ms (+ 0.28%) 6,215ms 6,371ms
Req 3 - references 391ms (± 0.38%) 392ms (± 1.03%) +0ms (+ 0.09%) 387ms 399ms
Req 4 - navto 280ms (± 0.62%) 282ms (± 1.34%) +1ms (+ 0.42%) 279ms 289ms
Req 5 - completionInfo count 1,356 (± 0.00%) 1,356 (± 0.00%) 0 ( 0.00%) 1,356 1,356
Req 5 - completionInfo 85ms (±11.56%) 86ms (± 9.58%) +1ms (+ 1.18%) 73ms 93ms
CompilerTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 3,063ms (± 0.21%) 3,083ms (± 0.81%) +20ms (+ 0.65%) 3,051ms 3,119ms
Req 2 - geterr 4,685ms (± 0.39%) 4,678ms (± 0.28%) -7ms (- 0.14%) 4,662ms 4,696ms
Req 3 - references 413ms (± 1.06%) 404ms (± 0.68%) -9ms (- 2.18%) 402ms 408ms
Req 4 - navto 295ms (± 0.70%) 294ms (± 0.53%) -1ms (- 0.17%) 292ms 295ms
Req 5 - completionInfo count 1,518 (± 0.00%) 1,518 (± 0.00%) 0 ( 0.00%) 1,518 1,518
Req 5 - completionInfo 86ms (± 4.18%) 83ms (± 4.77%) 🟩-4ms (- 4.44%) 79ms 88ms
xstateTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 3,959ms (± 0.48%) 3,983ms (± 0.51%) +24ms (+ 0.60%) 3,962ms 4,018ms
Req 2 - geterr 1,517ms (± 1.70%) 1,526ms (± 1.25%) +9ms (+ 0.62%) 1,507ms 1,556ms
Req 3 - references 135ms (± 1.79%) 133ms (± 2.50%) -3ms (- 1.97%) 128ms 137ms
Req 4 - navto 372ms (± 1.05%) 375ms (± 0.56%) +3ms (+ 0.81%) 371ms 377ms
Req 5 - completionInfo count 3,171 (± 0.00%) 3,171 (± 0.00%) 0 ( 0.00%) 3,171 3,171
Req 5 - completionInfo 506ms (± 1.03%) 512ms (± 1.84%) +7ms (+ 1.29%) 502ms 529ms
System
Machine Namets-ci-ubuntu
Platformlinux 5.4.0-135-generic
Architecturex64
Available Memory16 GB
Available Memory15 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v18.10.0, x64)
  • node (v16.17.1, x64)
  • node (v14.15.1, x64)
Scenarios
  • Compiler-UnionsTSServer - node (v18.10.0, x64)
  • Compiler-UnionsTSServer - node (v16.17.1, x64)
  • Compiler-UnionsTSServer - node (v14.15.1, x64)
  • CompilerTSServer - node (v18.10.0, x64)
  • CompilerTSServer - node (v16.17.1, x64)
  • CompilerTSServer - node (v14.15.1, x64)
  • xstateTSServer - node (v18.10.0, x64)
  • xstateTSServer - node (v16.17.1, x64)
  • xstateTSServer - node (v14.15.1, x64)
Benchmark Name Iterations
Current 52382 6
Baseline main 6

Startup

Comparison Report - main..52382
Metric main 52382 Delta Best Worst
tsc-startup - node (v16.17.1, x64)
Execution time 141.74ms (± 0.21%) 141.91ms (± 0.19%) +0.18ms (+ 0.12%) 141.17ms 146.22ms
tsserver-startup - node (v16.17.1, x64)
Execution time 225.11ms (± 0.14%) 225.51ms (± 0.20%) +0.39ms (+ 0.17%) 224.60ms 232.99ms
tsserverlibrary-startup - node (v16.17.1, x64)
Execution time 227.56ms (± 0.16%) 227.98ms (± 0.17%) +0.43ms (+ 0.19%) 227.06ms 234.04ms
typescript-startup - node (v16.17.1, x64)
Execution time 208.64ms (± 0.19%) 208.90ms (± 0.19%) +0.26ms (+ 0.13%) 207.98ms 215.98ms
System
Machine Namets-ci-ubuntu
Platformlinux 5.4.0-135-generic
Architecturex64
Available Memory16 GB
Available Memory15 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v16.17.1, x64)
Scenarios
  • tsc-startup - node (v16.17.1, x64)
  • tsserver-startup - node (v16.17.1, x64)
  • tsserverlibrary-startup - node (v16.17.1, x64)
  • typescript-startup - node (v16.17.1, x64)
Benchmark Name Iterations
Current 52382 6
Baseline main 6

Developer Information:

Download Benchmark

@jakebailey
Copy link
Member Author

Yay! That looks like a few percent improvement ranging from 1-5% ish.

@jakebailey jakebailey changed the title [experiment] Reuse Printers Reuse Printers with common options Jan 24, 2023
@jakebailey jakebailey marked this pull request as ready for review January 24, 2023 06:09
@jakebailey
Copy link
Member Author

I've rechecked the numbers from above; I can reproduce the 2% overall benefit on TFS:

Benchmark 1: main
  Time (mean ± σ):     17.619 s ±  0.045 s    [User: 17.314 s, System: 0.279 s]
  Range (min … max):   17.511 s … 17.702 s    20 runs
 
  Warning: Ignoring non-zero exit code.
 
Benchmark 2: 52382
  Time (mean ± σ):     17.301 s ±  0.042 s    [User: 17.016 s, System: 0.259 s]
  Range (min … max):   17.225 s … 17.402 s    20 runs
 
  Warning: Ignoring non-zero exit code.
 
Summary
  '52382' ran
    1.02 ± 0.00 times faster than 'main'

Which at least seems to indicate that the rest of the numbers are real.

But, I see no improvement when compiling our codebase, which to me indicates that this is probably just improving the performance of error messages. I think this comes down to the fact that our benchmarks are so old that none of them compile anymore. That isn't to say that improving that case isn't worthwhile, though.

@DanielRosenwasser
Copy link
Member

I mentioned this over chat - I am curious whether things like long completion lists of auto-imports benefit here. I don't know if our perf suite captures that sort of thing though.

@jakebailey
Copy link
Member Author

I mentioned this over chat - I am curious whether things like long completion lists of auto-imports benefit here. I don't know if our perf suite captures that sort of thing though.

I don't know that it does; quick info and completions appear to use getSymbolDisplayPartsDocumentationAndSymbolKind, which already uses an optimization like this (I'm going to update the PR to consolidate it).

@jakebailey
Copy link
Member Author

After this PR, the only places we arbitrarily come up with printers is:

  • The completion snippet printer
  • A completion signature printer (used along side snippets for the "detail" field)
  • In textChanges' getNonformattedText

I think these are all places that should reuse printers, but they are tricky because they pass a lot more options in; all of the ones I've touched in this PR only pass 0-2 of them so they're easy to enumerate.

Comment on lines -733 to -736
if (!printer) {
printer = createPrinter({ removeComments: true });
}
return printer;
Copy link
Member Author

Choose a reason for hiding this comment

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

Here's the code which already reused the printer; that being said, it only cached it once for each symbol, so it could totally be that this is a big improvement. Will have to rerun the benchmarks.

@jakebailey
Copy link
Member Author

Unfortunately the difference is that all of those other writers mentioned above also pass in PrintHandlers which can't be memoized. I'm a little confused though, as that appears to always be writer which is always passed in as an argument instead.

@jakebailey
Copy link
Member Author

@typescript-bot pack this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jan 25, 2023

Heya @jakebailey, I've started to run the tarball bundle task on this PR at 4102e95. You can monitor the build here.

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jan 25, 2023

Hey @jakebailey, I've packed this into an installable tgz. You can install it for testing by referencing it in your package.json like so:

{
    "devDependencies": {
        "typescript": "https://typescript.visualstudio.com/cf7ac146-d525-443c-b23c-0d58337efebc/_apis/build/builds/143917/artifacts?artifactName=tgz&fileId=69B086734D27136ECC49E773E04D82909A0A11EF02E3E36F3631B427C63D71F602&fileName=/typescript-5.0.0-insiders.20230125.tgz"
    }
}

and then running npm install.


There is also a playground for this build and an npm module you can use via "typescript": "npm:@typescript-deploys/[email protected]".;

@jakebailey
Copy link
Member Author

I'm not sure I'm going to keep this latest commit, but I want to try and see if it's worse in some way.

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jan 25, 2023

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

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

Here they are:

Compiler

Comparison Report - main..52382
Metric main 52382 Delta Best Worst
Angular - node (v18.10.0, x64)
Memory used 359,693k (± 0.01%) 359,835k (± 0.02%) +142k (+ 0.04%) 359,745k 359,921k
Parse Time 3.95s (± 0.94%) 3.96s (± 0.38%) +0.01s (+ 0.25%) 3.93s 3.97s
Bind Time 1.17s (± 0.35%) 1.18s (± 0.47%) +0.00s (+ 0.28%) 1.17s 1.18s
Check Time 8.85s (± 0.30%) 8.64s (± 0.76%) -0.20s (- 2.26%) 8.58s 8.74s
Emit Time 7.58s (± 0.39%) 7.64s (± 0.65%) +0.06s (+ 0.75%) 7.59s 7.71s
Total Time 21.55s (± 0.21%) 21.42s (± 0.47%) -0.13s (- 0.62%) 21.33s 21.56s
Compiler-Unions - node (v18.10.0, x64)
Memory used 194,467k (± 1.52%) 194,471k (± 1.52%) +4k (+ 0.00%) 192,507k 198,310k
Parse Time 1.64s (± 1.86%) 1.62s (± 2.04%) -0.02s (- 1.42%) 1.59s 1.66s
Bind Time 0.80s (± 0.69%) 0.80s (± 1.02%) +0.00s (+ 0.21%) 0.79s 0.81s
Check Time 9.68s (± 0.92%) 9.69s (± 0.69%) +0.01s (+ 0.09%) 9.59s 9.78s
Emit Time 2.79s (± 1.00%) 2.85s (± 4.20%) +0.05s (+ 1.91%) 2.79s 3.09s
Total Time 14.91s (± 0.65%) 14.95s (± 0.68%) +0.04s (+ 0.29%) 14.83s 15.13s
Monaco - node (v18.10.0, x64)
Memory used 343,978k (± 0.01%) 344,010k (± 0.01%) +32k (+ 0.01%) 343,947k 344,065k
Parse Time 2.96s (± 0.89%) 2.95s (± 1.44%) -0.01s (- 0.45%) 2.88s 2.99s
Bind Time 1.03s (± 1.17%) 1.03s (± 1.46%) 0.00s ( 0.00%) 1.02s 1.05s
Check Time 7.29s (± 0.56%) 7.03s (± 0.43%) 🟩-0.26s (- 3.56%) 7.00s 7.08s
Emit Time 4.35s (± 0.74%) 4.33s (± 1.01%) -0.02s (- 0.38%) 4.30s 4.41s
Total Time 15.63s (± 0.42%) 15.35s (± 0.73%) -0.28s (- 1.81%) 15.21s 15.51s
TFS - node (v18.10.0, x64)
Memory used 300,321k (± 0.00%) 300,388k (± 0.01%) +67k (+ 0.02%) 300,334k 300,409k
Parse Time 2.24s (± 1.24%) 2.27s (± 1.19%) +0.03s (+ 1.49%) 2.24s 2.30s
Bind Time 1.17s (± 0.88%) 1.17s (± 0.64%) +0.00s (+ 0.14%) 1.16s 1.18s
Check Time 6.90s (± 0.36%) 6.55s (± 0.37%) 🟩-0.34s (- 5.00%) 6.51s 6.57s
Emit Time 3.93s (± 0.73%) 3.90s (± 0.80%) -0.03s (- 0.76%) 3.86s 3.95s
Total Time 14.24s (± 0.34%) 13.90s (± 0.39%) -0.34s (- 2.39%) 13.79s 13.93s
material-ui - node (v18.10.0, x64)
Memory used 476,721k (± 0.01%) 476,717k (± 0.01%) -5k (- 0.00%) 476,669k 476,753k
Parse Time 3.55s (± 0.53%) 3.57s (± 0.60%) +0.02s (+ 0.61%) 3.55s 3.60s
Bind Time 0.97s (± 0.78%) 0.97s (± 0.53%) -0.00s (- 0.17%) 0.96s 0.97s
Check Time 17.09s (± 0.28%) 17.12s (± 0.46%) +0.03s (+ 0.17%) 17.02s 17.26s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 21.61s (± 0.29%) 21.66s (± 0.43%) +0.05s (+ 0.21%) 21.55s 21.82s
xstate - node (v18.10.0, x64)
Memory used 548,654k (± 0.01%) 548,579k (± 0.02%) -75k (- 0.01%) 548,449k 548,712k
Parse Time 4.56s (± 0.33%) 4.56s (± 0.58%) +0.00s (+ 0.11%) 4.51s 4.58s
Bind Time 1.71s (± 0.86%) 1.71s (± 1.20%) +0.00s (+ 0.29%) 1.68s 1.73s
Check Time 2.74s (± 0.75%) 2.74s (± 0.72%) -0.01s (- 0.30%) 2.71s 2.76s
Emit Time 0.08s (± 4.99%) 0.09s (± 4.62%) +0.01s (+ 8.16%) 0.08s 0.09s
Total Time 9.10s (± 0.18%) 9.10s (± 0.31%) 0.00s ( 0.00%) 9.07s 9.15s
Angular - node (v16.17.1, x64)
Memory used 359,056k (± 0.01%) 359,212k (± 0.01%) +156k (+ 0.04%) 359,180k 359,238k
Parse Time 4.19s (± 0.44%) 4.17s (± 0.39%) -0.01s (- 0.28%) 4.16s 4.20s
Bind Time 1.22s (± 0.33%) 1.22s (± 0.45%) +0.00s (+ 0.27%) 1.22s 1.23s
Check Time 9.55s (± 0.18%) 9.40s (± 0.16%) -0.14s (- 1.52%) 9.39s 9.43s
Emit Time 8.08s (± 0.48%) 8.05s (± 0.60%) -0.02s (- 0.29%) 8.01s 8.13s
Total Time 23.04s (± 0.16%) 22.86s (± 0.19%) -0.18s (- 0.80%) 22.82s 22.91s
Compiler-Unions - node (v16.17.1, x64)
Memory used 194,251k (± 0.03%) 194,233k (± 0.06%) -18k (- 0.01%) 194,118k 194,441k
Parse Time 1.81s (± 0.45%) 1.80s (± 0.35%) -0.01s (- 0.37%) 1.79s 1.81s
Bind Time 0.84s (± 1.06%) 0.85s (± 0.74%) +0.01s (+ 1.19%) 0.84s 0.86s
Check Time 10.37s (± 0.36%) 10.43s (± 0.80%) +0.06s (+ 0.59%) 10.30s 10.55s
Emit Time 3.06s (± 0.77%) 3.05s (± 1.07%) -0.01s (- 0.22%) 3.01s 3.09s
Total Time 16.08s (± 0.19%) 16.13s (± 0.54%) +0.05s (+ 0.34%) 15.99s 16.24s
Monaco - node (v16.17.1, x64)
Memory used 343,217k (± 0.01%) 343,255k (± 0.01%) +38k (+ 0.01%) 343,229k 343,283k
Parse Time 3.14s (± 0.82%) 3.17s (± 1.14%) +0.03s (+ 0.90%) 3.12s 3.22s
Bind Time 1.11s (± 0.89%) 1.11s (± 0.46%) +0.00s (+ 0.45%) 1.11s 1.12s
Check Time 7.89s (± 0.25%) 7.70s (± 0.33%) -0.19s (- 2.41%) 7.67s 7.73s
Emit Time 4.57s (± 0.39%) 4.52s (± 0.83%) -0.05s (- 1.02%) 4.47s 4.58s
Total Time 16.70s (± 0.24%) 16.50s (± 0.30%) -0.20s (- 1.19%) 16.45s 16.59s
TFS - node (v16.17.1, x64)
Memory used 299,713k (± 0.01%) 299,768k (± 0.01%) +55k (+ 0.02%) 299,737k 299,797k
Parse Time 2.47s (± 1.40%) 2.48s (± 1.26%) +0.01s (+ 0.54%) 2.44s 2.52s
Bind Time 1.25s (± 0.33%) 1.26s (± 0.50%) +0.01s (+ 0.67%) 1.25s 1.27s
Check Time 7.53s (± 0.50%) 7.23s (± 0.22%) 🟩-0.30s (- 4.01%) 7.21s 7.25s
Emit Time 4.24s (± 0.79%) 4.24s (± 0.75%) -0.00s (- 0.04%) 4.20s 4.29s
Total Time 15.49s (± 0.38%) 15.21s (± 0.42%) -0.28s (- 1.83%) 15.10s 15.30s
material-ui - node (v16.17.1, x64)
Memory used 476,133k (± 0.02%) 476,020k (± 0.01%) -113k (- 0.02%) 475,973k 476,114k
Parse Time 3.72s (± 0.40%) 3.72s (± 0.36%) +0.00s (+ 0.04%) 3.71s 3.74s
Bind Time 1.02s (± 0.00%) 1.02s (± 0.51%) -0.00s (- 0.33%) 1.01s 1.02s
Check Time 18.05s (± 0.13%) 18.09s (± 0.27%) +0.04s (+ 0.23%) 18.02s 18.14s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 22.78s (± 0.14%) 22.82s (± 0.20%) +0.05s (+ 0.20%) 22.74s 22.87s
xstate - node (v16.17.1, x64)
Memory used 546,280k (± 0.03%) 546,223k (± 0.02%) -57k (- 0.01%) 546,143k 546,350k
Parse Time 4.76s (± 0.57%) 4.75s (± 0.56%) -0.00s (- 0.07%) 4.72s 4.80s
Bind Time 1.81s (± 4.15%) 1.81s (± 3.86%) -0.00s (- 0.09%) 1.67s 1.85s
Check Time 2.98s (± 2.58%) 2.99s (± 2.61%) +0.02s (+ 0.50%) 2.94s 3.15s
Emit Time 0.09s (± 4.45%) 0.09s (± 5.53%) +0.00s (+ 1.82%) 0.09s 0.10s
Total Time 9.65s (± 0.47%) 9.65s (± 0.34%) +0.00s (+ 0.03%) 9.62s 9.71s
Angular - node (v14.15.1, x64)
Memory used 352,668k (± 0.01%) 352,845k (± 0.01%) +177k (+ 0.05%) 352,817k 352,868k
Parse Time 4.23s (± 0.35%) 4.23s (± 0.51%) -0.00s (- 0.12%) 4.19s 4.25s
Bind Time 1.28s (± 0.40%) 1.28s (± 0.49%) -0.00s (- 0.26%) 1.27s 1.29s
Check Time 9.84s (± 0.23%) 9.68s (± 0.66%) -0.16s (- 1.64%) 9.61s 9.78s
Emit Time 8.38s (± 0.39%) 8.37s (± 0.87%) -0.01s (- 0.08%) 8.29s 8.49s
Total Time 23.73s (± 0.15%) 23.55s (± 0.43%) -0.18s (- 0.75%) 23.42s 23.69s
Compiler-Unions - node (v14.15.1, x64)
Memory used 189,268k (± 0.06%) 189,779k (± 0.73%) +511k (+ 0.27%) 189,079k 192,598k
Parse Time 1.85s (± 0.95%) 1.84s (± 0.66%) -0.00s (- 0.09%) 1.83s 1.86s
Bind Time 0.86s (± 0.00%) 0.86s (± 0.47%) +0.00s (+ 0.19%) 0.86s 0.87s
Check Time 10.41s (± 0.33%) 10.42s (± 0.77%) +0.01s (+ 0.10%) 10.28s 10.50s
Emit Time 3.21s (± 4.13%) 3.32s (± 5.41%) +0.11s (+ 3.48%) 3.15s 3.52s
Total Time 16.33s (± 0.91%) 16.45s (± 1.09%) +0.13s (+ 0.77%) 16.24s 16.73s
Monaco - node (v14.15.1, x64)
Memory used 337,987k (± 0.01%) 338,047k (± 0.00%) +60k (+ 0.02%) 338,026k 338,062k
Parse Time 3.22s (± 1.28%) 3.25s (± 0.77%) +0.03s (+ 0.93%) 3.22s 3.29s
Bind Time 1.12s (± 0.75%) 1.11s (± 0.37%) -0.01s (- 0.60%) 1.10s 1.11s
Check Time 8.25s (± 0.57%) 8.04s (± 0.54%) -0.20s (- 2.47%) 7.98s 8.10s
Emit Time 4.81s (± 0.43%) 4.78s (± 0.89%) -0.03s (- 0.59%) 4.72s 4.83s
Total Time 17.39s (± 0.20%) 17.18s (± 0.37%) -0.21s (- 1.19%) 17.13s 17.30s
TFS - node (v14.15.1, x64)
Memory used 294,512k (± 0.01%) 294,577k (± 0.01%) +65k (+ 0.02%) 294,550k 294,592k
Parse Time 2.74s (± 0.88%) 2.75s (± 0.61%) +0.01s (+ 0.18%) 2.72s 2.77s
Bind Time 1.11s (± 0.00%) 1.11s (± 0.68%) -0.00s (- 0.15%) 1.10s 1.12s
Check Time 7.81s (± 0.50%) 7.54s (± 0.70%) 🟩-0.27s (- 3.52%) 7.47s 7.63s
Emit Time 4.65s (± 0.52%) 4.62s (± 0.84%) -0.04s (- 0.75%) 4.58s 4.67s
Total Time 16.32s (± 0.28%) 16.02s (± 0.44%) -0.30s (- 1.87%) 15.92s 16.10s
material-ui - node (v14.15.1, x64)
Memory used 471,503k (± 0.00%) 471,544k (± 0.00%) +42k (+ 0.01%) 471,518k 471,569k
Parse Time 3.93s (± 0.44%) 3.94s (± 0.67%) +0.01s (+ 0.25%) 3.90s 3.97s
Bind Time 1.05s (± 0.99%) 1.05s (± 0.78%) 0.00s ( 0.00%) 1.04s 1.06s
Check Time 19.05s (± 0.55%) 18.99s (± 0.36%) -0.06s (- 0.31%) 18.91s 19.09s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 24.03s (± 0.54%) 23.98s (± 0.36%) -0.05s (- 0.21%) 23.87s 24.10s
xstate - node (v14.15.1, x64)
Memory used 534,330k (± 0.01%) 534,486k (± 0.01%) +156k (+ 0.03%) 534,410k 534,535k
Parse Time 5.14s (± 0.78%) 5.16s (± 0.92%) +0.02s (+ 0.36%) 5.09s 5.22s
Bind Time 1.72s (± 0.86%) 1.72s (± 0.77%) +0.00s (+ 0.19%) 1.70s 1.74s
Check Time 3.08s (± 0.67%) 3.10s (± 0.67%) +0.01s (+ 0.43%) 3.07s 3.12s
Emit Time 0.10s (± 0.00%) 0.10s (± 0.00%) 0.00s ( 0.00%) 0.10s 0.10s
Total Time 10.04s (± 0.57%) 10.08s (± 0.53%) +0.04s (+ 0.35%) 10.02s 10.17s
System
Machine Namets-ci-ubuntu
Platformlinux 5.4.0-135-generic
Architecturex64
Available Memory16 GB
Available Memory15 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v18.10.0, x64)
  • node (v16.17.1, x64)
  • node (v14.15.1, x64)
Scenarios
  • Angular - node (v18.10.0, x64)
  • Angular - node (v16.17.1, x64)
  • Angular - node (v14.15.1, x64)
  • Compiler-Unions - node (v18.10.0, x64)
  • Compiler-Unions - node (v16.17.1, x64)
  • Compiler-Unions - node (v14.15.1, x64)
  • Monaco - node (v18.10.0, x64)
  • Monaco - node (v16.17.1, x64)
  • Monaco - node (v14.15.1, x64)
  • TFS - node (v18.10.0, x64)
  • TFS - node (v16.17.1, x64)
  • TFS - node (v14.15.1, x64)
  • material-ui - node (v18.10.0, x64)
  • material-ui - node (v16.17.1, x64)
  • material-ui - node (v14.15.1, x64)
  • xstate - node (v18.10.0, x64)
  • xstate - node (v16.17.1, x64)
  • xstate - node (v14.15.1, x64)
Benchmark Name Iterations
Current 52382 6
Baseline main 6

TSServer

Comparison Report - main..52382
Metric main 52382 Delta Best Worst
Compiler-UnionsTSServer - node (v18.10.0, x64)
Req 1 - updateOpen 2,533ms (± 1.54%) 2,496ms (± 1.83%) -38ms (- 1.48%) 2,456ms 2,582ms
Req 2 - geterr 5,510ms (± 0.33%) 5,524ms (± 0.44%) +14ms (+ 0.25%) 5,501ms 5,554ms
Req 3 - references 364ms (± 1.48%) 368ms (± 1.20%) +4ms (+ 0.96%) 364ms 376ms
Req 4 - navto 283ms (± 0.99%) 285ms (± 0.36%) +2ms (+ 0.77%) 283ms 286ms
Req 5 - completionInfo count 1,356 (± 0.00%) 1,356 (± 0.00%) 0 ( 0.00%) 1,356 1,356
Req 5 - completionInfo 68ms (± 4.41%) 67ms (± 3.52%) -1ms (- 1.97%) 65ms 71ms
CompilerTSServer - node (v18.10.0, x64)
Req 1 - updateOpen 2,735ms (± 1.49%) 2,724ms (± 1.55%) -11ms (- 0.41%) 2,691ms 2,786ms
Req 2 - geterr 4,043ms (± 0.47%) 4,060ms (± 0.72%) +18ms (+ 0.44%) 4,020ms 4,092ms
Req 3 - references 367ms (± 0.36%) 367ms (± 0.44%) -1ms (- 0.14%) 365ms 369ms
Req 4 - navto 293ms (± 0.63%) 297ms (± 0.55%) +5ms (+ 1.54%) 295ms 299ms
Req 5 - completionInfo count 1,518 (± 0.00%) 1,518 (± 0.00%) 0 ( 0.00%) 1,518 1,518
Req 5 - completionInfo 66ms (± 0.62%) 81ms (± 2.01%) +15ms (+22.92%) 78ms 82ms
xstateTSServer - node (v18.10.0, x64)
Req 1 - updateOpen 3,489ms (± 0.77%) 3,499ms (± 0.27%) +10ms (+ 0.28%) 3,487ms 3,509ms
Req 2 - geterr 1,404ms (± 1.50%) 1,402ms (± 0.68%) -2ms (- 0.13%) 1,388ms 1,412ms
Req 3 - references 106ms (± 0.97%) 105ms (± 1.44%) -2ms (- 1.57%) 103ms 106ms
Req 4 - navto 355ms (± 0.68%) 357ms (± 1.59%) +2ms (+ 0.47%) 353ms 368ms
Req 5 - completionInfo count 3,171 (± 0.00%) 3,171 (± 0.00%) 0 ( 0.00%) 3,171 3,171
Req 5 - completionInfo 467ms (± 1.27%) 469ms (± 0.93%) +3ms (+ 0.54%) 465ms 475ms
Compiler-UnionsTSServer - node (v16.17.1, x64)
Req 1 - updateOpen 2,786ms (± 0.40%) 2,797ms (± 0.13%) +11ms (+ 0.39%) 2,793ms 2,802ms
Req 2 - geterr 5,886ms (± 0.36%) 5,915ms (± 1.57%) +29ms (+ 0.49%) 5,838ms 6,090ms
Req 3 - references 379ms (± 1.03%) 375ms (± 1.09%) -4ms (- 1.14%) 370ms 381ms
Req 4 - navto 279ms (± 1.66%) 277ms (± 0.91%) -2ms (- 0.54%) 273ms 280ms
Req 5 - completionInfo count 1,356 (± 0.00%) 1,356 (± 0.00%) 0 ( 0.00%) 1,356 1,356
Req 5 - completionInfo 80ms (± 9.04%) 75ms (± 7.13%) 🟩-5ms (- 6.68%) 68ms 82ms
CompilerTSServer - node (v16.17.1, x64)
Req 1 - updateOpen 2,927ms (± 0.37%) 2,931ms (± 0.79%) +4ms (+ 0.13%) 2,914ms 2,975ms
Req 2 - geterr 4,391ms (± 0.61%) 4,404ms (± 0.51%) +13ms (+ 0.30%) 4,364ms 4,423ms
Req 3 - references 383ms (± 0.71%) 381ms (± 0.87%) -3ms (- 0.65%) 376ms 384ms
Req 4 - navto 287ms (± 0.87%) 287ms (± 0.57%) -1ms (- 0.29%) 284ms 289ms
Req 5 - completionInfo count 1,518 (± 0.00%) 1,518 (± 0.00%) 0 ( 0.00%) 1,518 1,518
Req 5 - completionInfo 72ms (± 1.14%) 72ms (± 1.62%) +1ms (+ 0.70%) 71ms 74ms
xstateTSServer - node (v16.17.1, x64)
Req 1 - updateOpen 3,642ms (± 0.45%) 3,630ms (± 0.44%) -13ms (- 0.34%) 3,610ms 3,645ms
Req 2 - geterr 1,546ms (± 0.96%) 1,541ms (± 0.78%) -5ms (- 0.30%) 1,521ms 1,558ms
Req 3 - references 112ms (± 1.43%) 111ms (± 2.30%) -1ms (- 0.60%) 109ms 115ms
Req 4 - navto 333ms (± 0.49%) 340ms (± 0.76%) +7ms (+ 2.05%) 337ms 344ms
Req 5 - completionInfo count 3,171 (± 0.00%) 3,171 (± 0.00%) 0 ( 0.00%) 3,171 3,171
Req 5 - completionInfo 478ms (± 0.85%) 480ms (± 0.56%) +2ms (+ 0.38%) 477ms 484ms
Compiler-UnionsTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 2,900ms (± 0.55%) 2,906ms (± 0.58%) +6ms (+ 0.21%) 2,889ms 2,931ms
Req 2 - geterr 6,271ms (± 0.67%) 6,276ms (± 0.90%) +5ms (+ 0.08%) 6,181ms 6,338ms
Req 3 - references 387ms (± 0.45%) 391ms (± 0.89%) +4ms (+ 0.90%) 387ms 396ms
Req 4 - navto 284ms (± 1.45%) 282ms (± 2.18%) -2ms (- 0.65%) 277ms 294ms
Req 5 - completionInfo count 1,356 (± 0.00%) 1,356 (± 0.00%) 0 ( 0.00%) 1,356 1,356
Req 5 - completionInfo 87ms (± 7.36%) 89ms (± 6.09%) +2ms (+ 2.30%) 79ms 93ms
CompilerTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 3,063ms (± 0.28%) 3,069ms (± 0.75%) +7ms (+ 0.21%) 3,052ms 3,112ms
Req 2 - geterr 4,669ms (± 0.28%) 4,707ms (± 0.51%) +39ms (+ 0.82%) 4,669ms 4,731ms
Req 3 - references 413ms (± 1.46%) 407ms (± 0.96%) -6ms (- 1.37%) 402ms 411ms
Req 4 - navto 297ms (± 0.45%) 296ms (± 0.50%) -1ms (- 0.34%) 294ms 298ms
Req 5 - completionInfo count 1,518 (± 0.00%) 1,518 (± 0.00%) 0 ( 0.00%) 1,518 1,518
Req 5 - completionInfo 88ms (± 0.85%) 81ms (± 3.52%) 🟩-7ms (- 7.94%) 80ms 87ms
xstateTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 3,962ms (± 0.53%) 3,965ms (± 0.48%) +3ms (+ 0.06%) 3,944ms 3,998ms
Req 2 - geterr 1,518ms (± 1.29%) 1,524ms (± 1.91%) +6ms (+ 0.36%) 1,487ms 1,559ms
Req 3 - references 133ms (± 3.36%) 129ms (± 2.79%) -3ms (- 2.39%) 124ms 135ms
Req 4 - navto 374ms (± 0.84%) 375ms (± 0.53%) +1ms (+ 0.31%) 372ms 377ms
Req 5 - completionInfo count 3,171 (± 0.00%) 3,171 (± 0.00%) 0 ( 0.00%) 3,171 3,171
Req 5 - completionInfo 504ms (± 1.39%) 494ms (± 2.07%) -10ms (- 1.92%) 485ms 507ms
System
Machine Namets-ci-ubuntu
Platformlinux 5.4.0-135-generic
Architecturex64
Available Memory16 GB
Available Memory15 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v18.10.0, x64)
  • node (v16.17.1, x64)
  • node (v14.15.1, x64)
Scenarios
  • Compiler-UnionsTSServer - node (v18.10.0, x64)
  • Compiler-UnionsTSServer - node (v16.17.1, x64)
  • Compiler-UnionsTSServer - node (v14.15.1, x64)
  • CompilerTSServer - node (v18.10.0, x64)
  • CompilerTSServer - node (v16.17.1, x64)
  • CompilerTSServer - node (v14.15.1, x64)
  • xstateTSServer - node (v18.10.0, x64)
  • xstateTSServer - node (v16.17.1, x64)
  • xstateTSServer - node (v14.15.1, x64)
Benchmark Name Iterations
Current 52382 6
Baseline main 6

Startup

Comparison Report - main..52382
Metric main 52382 Delta Best Worst
tsc-startup - node (v16.17.1, x64)
Execution time 141.78ms (± 0.17%) 141.94ms (± 0.17%) +0.16ms (+ 0.11%) 141.21ms 146.04ms
tsserver-startup - node (v16.17.1, x64)
Execution time 225.20ms (± 0.14%) 225.64ms (± 0.20%) +0.44ms (+ 0.19%) 224.60ms 232.81ms
tsserverlibrary-startup - node (v16.17.1, x64)
Execution time 227.82ms (± 0.16%) 228.67ms (± 0.31%) +0.85ms (+ 0.37%) 227.10ms 236.79ms
typescript-startup - node (v16.17.1, x64)
Execution time 208.79ms (± 0.16%) 209.32ms (± 0.23%) +0.53ms (+ 0.25%) 208.25ms 218.89ms
System
Machine Namets-ci-ubuntu
Platformlinux 5.4.0-135-generic
Architecturex64
Available Memory16 GB
Available Memory15 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v16.17.1, x64)
Scenarios
  • tsc-startup - node (v16.17.1, x64)
  • tsserver-startup - node (v16.17.1, x64)
  • tsserverlibrary-startup - node (v16.17.1, x64)
  • typescript-startup - node (v16.17.1, x64)
Benchmark Name Iterations
Current 52382 6
Baseline main 6

Developer Information:

Download Benchmark

@jakebailey
Copy link
Member Author

Performance of this more scalable / fancier version appear to be the same; that's good and makes some sense given this is the same sort of thing we do for other caches in the checker.

I have a more invasive change which changes printer to allow you to pass in handlers in the internal APIs which would fix the rest, but I'll try that on another experimental PR first.

Comment on lines 1354 to 1359
const key = keyBool(o.removeComments)
+ keyBool(o.neverAsciiEscape)
+ keyBool(o.omitTrailingSemicolon)
+ keyNum(o.module)
+ keyNum(o.target)
+ keyNum(o.newLine);
Copy link
Member Author

Choose a reason for hiding this comment

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

Believe it or not, this is the fastest cache key of the variants I tried.

Copy link
Member

Choose a reason for hiding this comment

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

It's actually faster than using a simple native template string like

`${o.removeComments}|${o.neverAsciiEscape}|${o.omitTrailingSemicolon}|${o.module}|${o.target}|${o.newLine}`

? Feels odd.

Copy link
Member

@weswigham weswigham Jan 25, 2023

Choose a reason for hiding this comment

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

Oh, but, perhaps more relevant - we have a getKeyForCompilerOptions function already. It's used by the documentRegistry in the language service and in the module resolver. If there is actually a big difference in time spent making the key, maybe some changes to it would be warranted as well? I'd certainly prefer it if we reused the existing option-key-generating-mechanism if we could.

Copy link
Member Author

Choose a reason for hiding this comment

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

So, two things:

  • Writing out keyBool(...) + "|" + keyBool(...) + "|" + ... was just as fast as writing out ${keyBool(...)}|${keyBool(...)}....
  • Moving the separators into the "keys" (i.e. how I did u, 1, 0,) instead of putting them the template was twice as fast.

So, I opted for the variant which doesn't make the line go way way to the right as the number of parts increases.

Copy link
Member Author

Choose a reason for hiding this comment

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

That being said it's still like millions of iterations per second so unlikely to matter; I was really sad to find that [..., ..., ...].join("|") was an order of magnitude slower than these methods.

I'll go take a look at that other function.

Copy link
Member Author

Choose a reason for hiding this comment

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

Ah, getKeyForCompilerOptions is quite literally what I said was slow above; given the arbitrary nature of the big list of compiler keys, I'm not sure I could change that.

The checker itself does have a few internal caches which do the hardcoded thing you said (and I did first), hard to say if they'd really benefit.

I'm happy to make this whatever makes sense, I just knew for this one I had to combine like 6 things and the length was getting unwieldy (so I resorted to helpers and multiple lines).

Copy link
Member

Choose a reason for hiding this comment

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

All 2 existing usages of getKeyForCompilerOptions actually use a fixed list of keys - longer lists, to be sure, made by filtering the full list of options by a boolean flag set on the option, but still fixed lists. In module resolution, we actually use these keys quite a lot - if it's bad enough to matter here, I'd think it'd matter there, too.

Writing out keyBool(...) + "|" + keyBool(...) + "|" + ... was just as fast as writing out ${keyBool(...)}|${keyBool(...)}....

As for the simpler case, my focus on moreso why the coercion functions were needed at all, and a simple string concatenation wouldn't suffice. Since the order is fixed, it's not like you need to distringuish between strings and undefined or true or false or the like - is there a perf benefit to writing value === undefined ? "u," : value ? "1," : "0," over ${value},?

Copy link
Member Author

Choose a reason for hiding this comment

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

Ah, I see. I tested that one out and it was middling in performance.

https://jsbench.me/prldbzl6dj/2 is what I was using to test, but I also can just revert these last few commits and go back to the version which hardcodes the 4 most common ones.

Copy link
Member

@weswigham weswigham Jan 25, 2023

Choose a reason for hiding this comment

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

For your future cache key micro-optimizing endeavors: If string concatenation is the slow bit, seems like it's best to skip on strings almost entirely:

function bitwise(o) {
	return ""+((o.removeComments ? 1 : 0)
        | (o.neverAsciiEscape ? 2 : 0)
        | (o.omitTrailingSemicolon ? 4 : 0)
        | (o.module << 4) // 0-199
        | (o.target << 12) // 0-100
        | (o.newLine << 20)); // 0-1
}

is ~5% faster than the string-based next best 😛 (assuming it's OK to treat undefined and false the same, which it might be, might not be in this case)

Copy link
Member Author

Choose a reason for hiding this comment

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

That's a good idea (doesn't even have to be a string key either, so we could skip the ""+)

@jakebailey
Copy link
Member Author

I've reverted this back to its approved state (for the beta); no fancy cache, just a shortlist of hardcoded predefined defaults.

@jakebailey
Copy link
Member Author

@typescript-bot perf test this faster

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jan 25, 2023

Heya @jakebailey, I've started to run the abridged perf test suite on this PR at 708216a. You can monitor the build here.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

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

Here they are:

Comparison Report - main..52382

Metric main 52382 Delta Best Worst
Angular - node (v16.17.1, x64)
Memory used 359,040k (± 0.01%) 359,221k (± 0.01%) +181k (+ 0.05%) 359,193k 359,250k
Parse Time 4.18s (± 0.29%) 4.19s (± 0.39%) +0.00s (+ 0.00%) 4.16s 4.21s
Bind Time 1.23s (± 0.51%) 1.22s (± 0.84%) -0.01s (- 0.54%) 1.21s 1.24s
Check Time 9.56s (± 0.33%) 9.41s (± 0.23%) -0.15s (- 1.52%) 9.39s 9.45s
Emit Time 8.09s (± 0.24%) 8.06s (± 0.46%) -0.03s (- 0.35%) 8.01s 8.11s
Total Time 23.05s (± 0.21%) 22.88s (± 0.20%) -0.17s (- 0.73%) 22.83s 22.94s
Compiler-Unions - node (v16.17.1, x64)
Memory used 194,254k (± 0.04%) 194,732k (± 0.67%) +478k (+ 0.25%) 194,152k 197,381k
Parse Time 1.79s (± 1.29%) 1.80s (± 0.57%) +0.02s (+ 0.84%) 1.79s 1.82s
Bind Time 0.84s (± 0.97%) 0.85s (± 0.74%) +0.01s (+ 0.79%) 0.84s 0.86s
Check Time 10.39s (± 0.45%) 10.35s (± 0.83%) -0.04s (- 0.37%) 10.26s 10.48s
Emit Time 3.06s (± 1.27%) 3.07s (± 1.32%) +0.01s (+ 0.22%) 3.02s 3.13s
Total Time 16.08s (± 0.50%) 16.07s (± 0.39%) -0.01s (- 0.07%) 16.00s 16.15s
Monaco - node (v16.17.1, x64)
Memory used 343,232k (± 0.01%) 343,226k (± 0.01%) -6k (- 0.00%) 343,188k 343,272k
Parse Time 3.17s (± 0.88%) 3.16s (± 0.82%) -0.01s (- 0.26%) 3.12s 3.20s
Bind Time 1.12s (± 0.46%) 1.11s (± 0.68%) -0.01s (- 0.75%) 1.10s 1.12s
Check Time 7.90s (± 0.15%) 7.71s (± 0.20%) -0.19s (- 2.43%) 7.69s 7.73s
Emit Time 4.54s (± 0.32%) 4.51s (± 0.41%) -0.03s (- 0.59%) 4.49s 4.54s
Total Time 16.72s (± 0.21%) 16.48s (± 0.22%) -0.24s (- 1.43%) 16.42s 16.52s
TFS - node (v16.17.1, x64)
Memory used 299,700k (± 0.00%) 299,770k (± 0.00%) +71k (+ 0.02%) 299,747k 299,788k
Parse Time 2.48s (± 1.21%) 2.46s (± 1.01%) -0.02s (- 0.87%) 2.43s 2.49s
Bind Time 1.25s (± 0.44%) 1.25s (± 0.60%) -0.00s (- 0.27%) 1.24s 1.26s
Check Time 7.53s (± 0.16%) 7.17s (± 0.41%) 🟩-0.36s (- 4.82%) 7.12s 7.20s
Emit Time 4.26s (± 0.59%) 4.23s (± 0.57%) -0.04s (- 0.86%) 4.19s 4.25s
Total Time 15.53s (± 0.22%) 15.11s (± 0.27%) -0.42s (- 2.73%) 15.08s 15.19s
material-ui - node (v16.17.1, x64)
Memory used 476,090k (± 0.02%) 476,118k (± 0.02%) +28k (+ 0.01%) 476,025k 476,215k
Parse Time 3.72s (± 0.29%) 3.72s (± 0.22%) -0.00s (- 0.09%) 3.71s 3.73s
Bind Time 1.02s (± 0.40%) 1.02s (± 0.74%) -0.00s (- 0.33%) 1.01s 1.03s
Check Time 18.10s (± 0.49%) 18.13s (± 0.23%) +0.03s (+ 0.18%) 18.07s 18.20s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 22.84s (± 0.44%) 22.86s (± 0.22%) +0.02s (+ 0.11%) 22.79s 22.94s
xstate - node (v16.17.1, x64)
Memory used 546,230k (± 0.02%) 546,166k (± 0.00%) -65k (- 0.01%) 546,141k 546,186k
Parse Time 4.77s (± 0.34%) 4.77s (± 0.41%) -0.00s (- 0.10%) 4.74s 4.80s
Bind Time 1.82s (± 3.96%) 1.85s (± 0.28%) +0.03s (+ 1.65%) 1.84s 1.85s
Check Time 3.01s (± 2.61%) 2.96s (± 0.62%) -0.05s (- 1.61%) 2.93s 2.98s
Emit Time 0.09s (± 4.45%) 0.09s (± 4.45%) 0.00s ( 0.00%) 0.09s 0.10s
Total Time 9.70s (± 0.25%) 9.67s (± 0.20%) -0.02s (- 0.24%) 9.64s 9.69s
System
Machine Namets-ci-ubuntu
Platformlinux 5.4.0-135-generic
Architecturex64
Available Memory16 GB
Available Memory15 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v16.17.1, x64)
Scenarios
  • Angular - node (v16.17.1, x64)
  • Compiler-Unions - node (v16.17.1, x64)
  • Monaco - node (v16.17.1, x64)
  • TFS - node (v16.17.1, x64)
  • material-ui - node (v16.17.1, x64)
  • xstate - node (v16.17.1, x64)
Benchmark Name Iterations
Current 52382 6
Baseline main 6

Developer Information:

Download Benchmark

@jakebailey
Copy link
Member Author

Perf seems the same as the first run (though I only checked node 16 via the short test; node 18 appears to do better). Are we good with this PR in this state for the beta?

@jakebailey jakebailey merged commit 0141d1d into microsoft:main Jan 25, 2023
@jakebailey jakebailey deleted the pooled-printers branch January 25, 2023 19:59
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
None yet
Development

Successfully merging this pull request may close these issues.

4 participants