@rbuckton The results of the perf run you requested are in! Here they are:CompilerComparison Report - main..51682Metric | main | 51682 | Delta | Best | Worst |
---|
Angular - node (v18.10.0, x64) |
---|
Memory used | 341,231k (± 0.02%) | 364,522k (± 0.02%) | +23,291k (+ 6.83%) | 364,330k | 364,631k | Parse Time | 1.56s (± 0.92%) | 1.56s (± 0.63%) | -0.00s (- 0.06%) | 1.54s | 1.58s | Bind Time | 0.53s (± 0.89%) | 0.56s (± 1.20%) | +0.02s (+ 4.50%) | 0.54s | 0.57s | Check Time | 4.01s (± 1.11%) | 3.95s (± 0.82%) | -0.07s (- 1.64%) | 3.89s | 4.03s | Emit Time | 4.29s (± 0.99%) | 3.93s (± 1.47%) | 🟩-0.36s (- 8.37%) | 3.84s | 4.13s | Total Time | 10.39s (± 0.53%) | 9.99s (± 0.77%) | 🟩-0.40s (- 3.87%) | 9.89s | 10.27s | Compiler-Unions - node (v18.10.0, x64) |
---|
Memory used | 187,342k (± 1.08%) | 197,373k (± 0.65%) | +10,031k (+ 5.35%) | 196,734k | 202,523k | Parse Time | 0.62s (± 0.99%) | 0.61s (± 1.19%) | -0.01s (- 1.45%) | 0.60s | 0.63s | Bind Time | 0.33s (± 1.34%) | 0.35s (± 2.49%) | +0.02s (+ 4.82%) | 0.34s | 0.37s | Check Time | 5.05s (± 0.86%) | 4.93s (± 0.78%) | -0.12s (- 2.34%) | 4.88s | 5.04s | Emit Time | 1.56s (± 0.63%) | 1.46s (± 0.70%) | 🟩-0.10s (- 6.59%) | 1.44s | 1.49s | Total Time | 7.57s (± 0.54%) | 7.35s (± 0.60%) | -0.21s (- 2.84%) | 7.28s | 7.48s | Monaco - node (v18.10.0, x64) |
---|
Memory used | 320,497k (± 0.01%) | 347,249k (± 0.01%) | +26,752k (+ 8.35%) | 347,114k | 347,334k | Parse Time | 1.16s (± 1.79%) | 1.18s (± 0.81%) | +0.01s (+ 1.03%) | 1.16s | 1.19s | Bind Time | 0.49s (± 1.40%) | 0.50s (± 0.80%) | +0.01s (+ 3.09%) | 0.49s | 0.51s | Check Time | 3.85s (± 0.49%) | 3.69s (± 0.25%) | 🟩-0.16s (- 4.10%) | 3.67s | 3.71s | Emit Time | 2.26s (± 1.00%) | 2.04s (± 1.21%) | 🟩-0.22s (- 9.62%) | 2.00s | 2.11s | Total Time | 7.76s (± 0.50%) | 7.41s (± 0.35%) | 🟩-0.35s (- 4.49%) | 7.34s | 7.46s | TFS - node (v18.10.0, x64) |
---|
Memory used | 283,711k (± 0.25%) | 306,302k (± 0.23%) | +22,591k (+ 7.96%) | 304,838k | 307,007k | Parse Time | 0.97s (± 2.04%) | 0.97s (± 1.55%) | -0.00s (- 0.31%) | 0.94s | 1.00s | Bind Time | 0.45s (± 6.89%) | 0.52s (± 8.55%) | +0.07s (+15.66%) | 0.45s | 0.59s | Check Time | 3.79s (± 0.65%) | 3.62s (± 0.59%) | 🟩-0.17s (- 4.41%) | 3.57s | 3.67s | Emit Time | 2.22s (± 0.88%) | 2.02s (± 0.37%) | 🟩-0.19s (- 8.75%) | 2.01s | 2.04s | Total Time | 7.42s (± 0.82%) | 7.13s (± 0.81%) | 🟩-0.29s (- 3.96%) | 6.99s | 7.24s | material-ui - node (v18.10.0, x64) |
---|
Memory used | 435,953k (± 0.02%) | 451,491k (± 0.01%) | +15,538k (+ 3.56%) | 451,398k | 451,623k | Parse Time | 1.33s (± 0.74%) | 1.32s (± 0.36%) | -0.01s (- 0.68%) | 1.31s | 1.33s | Bind Time | 0.49s (± 1.00%) | 0.44s (± 1.02%) | 🟩-0.06s (-11.34%) | 0.43s | 0.45s | Check Time | 10.36s (± 0.90%) | 10.22s (± 0.80%) | -0.15s (- 1.42%) | 10.10s | 10.46s | Emit Time | 0.00s (± 0.00%) | 0.00s (± 0.00%) | 0.00s ( NaN%) | 0.00s | 0.00s | Total Time | 12.19s (± 0.85%) | 11.98s (± 0.68%) | -0.21s (- 1.74%) | 11.85s | 12.22s | xstate - node (v18.10.0, x64) |
---|
Memory used | 518,397k (± 0.01%) | 553,113k (± 0.01%) | +34,716k (+ 6.70%) | 552,966k | 553,340k | Parse Time | 1.91s (± 0.61%) | 1.92s (± 0.52%) | +0.01s (+ 0.63%) | 1.90s | 1.94s | Bind Time | 0.77s (± 3.38%) | 0.75s (± 2.99%) | -0.02s (- 2.46%) | 0.69s | 0.79s | Check Time | 1.04s (± 0.73%) | 1.02s (± 0.85%) | -0.02s (- 1.74%) | 1.00s | 1.04s | Emit Time | 0.05s (± 0.00%) | 0.05s (± 0.00%) | 0.00s ( 0.00%) | 0.05s | 0.05s | Total Time | 3.77s (± 1.00%) | 3.74s (± 0.71%) | -0.03s (- 0.85%) | 3.66s | 3.79s | Angular - node (v16.17.1, x64) |
---|
Memory used | 340,608k (± 0.02%) | 363,911k (± 0.02%) | +23,303k (+ 6.84%) | 363,727k | 364,005k | Parse Time | 1.90s (± 0.36%) | 1.91s (± 0.58%) | +0.02s (+ 1.06%) | 1.90s | 1.95s | Bind Time | 0.65s (± 0.72%) | 0.67s (± 0.77%) | +0.02s (+ 3.23%) | 0.66s | 0.68s | Check Time | 5.18s (± 0.39%) | 5.02s (± 0.80%) | 🟩-0.16s (- 3.05%) | 4.93s | 5.10s | Emit Time | 5.14s (± 0.67%) | 4.71s (± 1.81%) | 🟩-0.43s (- 8.32%) | 4.57s | 5.01s | Total Time | 12.87s (± 0.39%) | 12.32s (± 0.77%) | 🟩-0.54s (- 4.23%) | 12.10s | 12.53s | Compiler-Unions - node (v16.17.1, x64) |
---|
Memory used | 187,354k (± 0.53%) | 200,511k (± 0.60%) | +13,156k (+ 7.02%) | 198,477k | 201,977k | Parse Time | 0.79s (± 1.03%) | 0.79s (± 0.38%) | -0.00s (- 0.13%) | 0.79s | 0.80s | Bind Time | 0.42s (± 1.12%) | 0.44s (± 0.91%) | +0.02s (+ 3.78%) | 0.43s | 0.45s | Check Time | 6.09s (± 0.48%) | 5.89s (± 1.05%) | 🟩-0.20s (- 3.25%) | 5.80s | 6.11s | Emit Time | 1.93s (± 0.49%) | 1.80s (± 1.21%) | 🟩-0.12s (- 6.33%) | 1.78s | 1.88s | Total Time | 9.23s (± 0.40%) | 8.93s (± 0.73%) | 🟩-0.31s (- 3.32%) | 8.80s | 9.14s | Monaco - node (v16.17.1, x64) |
---|
Memory used | 319,816k (± 0.01%) | 346,546k (± 0.02%) | +26,730k (+ 8.36%) | 346,386k | 346,654k | Parse Time | 1.43s (± 0.47%) | 1.43s (± 0.47%) | -0.01s (- 0.42%) | 1.41s | 1.44s | Bind Time | 0.60s (± 0.61%) | 0.61s (± 0.85%) | +0.02s (+ 2.52%) | 0.60s | 0.62s | Check Time | 4.89s (± 0.35%) | 4.69s (± 0.48%) | 🟩-0.20s (- 3.99%) | 4.65s | 4.74s | Emit Time | 2.74s (± 0.74%) | 2.49s (± 0.81%) | 🟩-0.26s (- 9.30%) | 2.42s | 2.53s | Total Time | 9.66s (± 0.32%) | 9.22s (± 0.47%) | 🟩-0.43s (- 4.50%) | 9.13s | 9.34s | TFS - node (v16.17.1, x64) |
---|
Memory used | 282,283k (± 0.01%) | 304,161k (± 0.01%) | +21,879k (+ 7.75%) | 304,117k | 304,192k | Parse Time | 1.17s (± 0.71%) | 1.16s (± 0.57%) | -0.00s (- 0.26%) | 1.15s | 1.18s | Bind Time | 0.66s (± 3.82%) | 0.59s (± 4.04%) | 🟩-0.07s (-10.41%) | 0.58s | 0.69s | Check Time | 4.77s (± 0.38%) | 4.59s (± 0.41%) | 🟩-0.18s (- 3.84%) | 4.53s | 4.62s | Emit Time | 2.79s (± 1.88%) | 2.52s (± 1.61%) | 🟩-0.27s (- 9.58%) | 2.47s | 2.62s | Total Time | 9.39s (± 0.78%) | 8.87s (± 0.53%) | 🟩-0.52s (- 5.55%) | 8.81s | 9.00s | material-ui - node (v16.17.1, x64) |
---|
Memory used | 435,264k (± 0.00%) | 450,960k (± 0.01%) | +15,696k (+ 3.61%) | 450,867k | 451,070k | Parse Time | 1.65s (± 0.75%) | 1.67s (± 0.75%) | +0.01s (+ 0.85%) | 1.64s | 1.69s | Bind Time | 0.50s (± 1.15%) | 0.51s (± 1.14%) | +0.00s (+ 0.80%) | 0.50s | 0.52s | Check Time | 11.87s (± 0.66%) | 11.78s (± 0.78%) | -0.09s (- 0.76%) | 11.61s | 11.93s | Emit Time | 0.00s (± 0.00%) | 0.00s (± 0.00%) | 0.00s ( NaN%) | 0.00s | 0.00s | Total Time | 14.02s (± 0.61%) | 13.95s (± 0.67%) | -0.07s (- 0.49%) | 13.77s | 14.13s | xstate - node (v16.17.1, x64) |
---|
Memory used | 515,991k (± 0.01%) | 550,680k (± 0.01%) | +34,690k (+ 6.72%) | 550,577k | 550,859k | Parse Time | 2.32s (± 0.59%) | 2.33s (± 0.81%) | +0.02s (+ 0.65%) | 2.28s | 2.37s | Bind Time | 0.84s (± 1.28%) | 0.84s (± 2.65%) | -0.00s (- 0.36%) | 0.80s | 0.90s | Check Time | 1.36s (± 0.77%) | 1.33s (± 0.65%) | -0.03s (- 1.91%) | 1.31s | 1.35s | Emit Time | 0.06s (± 0.00%) | 0.06s (± 0.00%) | 0.00s ( 0.00%) | 0.06s | 0.06s | Total Time | 4.58s (± 0.54%) | 4.57s (± 0.51%) | -0.01s (- 0.24%) | 4.51s | 4.64s | Angular - node (v14.15.1, x64) |
---|
Memory used | 334,102k (± 0.01%) | 357,633k (± 0.01%) | +23,531k (+ 7.04%) | 357,587k | 357,708k | Parse Time | 2.07s (± 0.75%) | 2.04s (± 0.64%) | -0.03s (- 1.35%) | 2.02s | 2.08s | Bind Time | 0.70s (± 0.84%) | 0.72s (± 0.56%) | +0.01s (+ 2.13%) | 0.71s | 0.73s | Check Time | 5.54s (± 0.71%) | 5.35s (± 0.31%) | 🟩-0.20s (- 3.57%) | 5.31s | 5.38s | Emit Time | 5.38s (± 0.72%) | 4.80s (± 0.80%) | 🟩-0.57s (-10.67%) | 4.73s | 4.88s | Total Time | 13.70s (± 0.50%) | 12.91s (± 0.40%) | 🟩-0.79s (- 5.73%) | 12.79s | 13.05s | Compiler-Unions - node (v14.15.1, x64) |
---|
Memory used | 182,679k (± 0.63%) | 196,207k (± 0.52%) | +13,528k (+ 7.41%) | 193,420k | 196,950k | Parse Time | 0.89s (± 0.82%) | 0.90s (± 0.66%) | +0.01s (+ 0.90%) | 0.88s | 0.91s | Bind Time | 0.46s (± 1.09%) | 0.47s (± 0.85%) | +0.02s (+ 3.52%) | 0.46s | 0.48s | Check Time | 6.36s (± 0.55%) | 6.10s (± 0.53%) | 🟩-0.26s (- 4.05%) | 6.03s | 6.17s | Emit Time | 2.07s (± 1.36%) | 1.91s (± 0.49%) | 🟩-0.16s (- 7.87%) | 1.88s | 1.93s | Total Time | 9.77s (± 0.50%) | 9.38s (± 0.33%) | 🟩-0.40s (- 4.08%) | 9.31s | 9.45s | Monaco - node (v14.15.1, x64) |
---|
Memory used | 314,635k (± 0.01%) | 341,509k (± 0.00%) | +26,874k (+ 8.54%) | 341,472k | 341,544k | Parse Time | 1.58s (± 0.60%) | 1.58s (± 0.67%) | -0.00s (- 0.06%) | 1.56s | 1.61s | Bind Time | 0.64s (± 0.58%) | 0.64s (± 0.56%) | +0.01s (+ 1.42%) | 0.64s | 0.65s | Check Time | 5.19s (± 0.49%) | 4.98s (± 0.56%) | 🟩-0.21s (- 4.06%) | 4.94s | 5.04s | Emit Time | 2.91s (± 0.83%) | 2.57s (± 0.87%) | 🟩-0.34s (-11.62%) | 2.53s | 2.62s | Total Time | 10.32s (± 0.37%) | 9.78s (± 0.48%) | 🟩-0.54s (- 5.25%) | 9.71s | 9.89s | TFS - node (v14.15.1, x64) |
---|
Memory used | 279,369k (± 0.01%) | 301,278k (± 0.00%) | +21,909k (+ 7.84%) | 301,251k | 301,312k | Parse Time | 1.33s (± 1.19%) | 1.33s (± 1.49%) | +0.00s (+ 0.30%) | 1.31s | 1.40s | Bind Time | 0.59s (± 0.68%) | 0.61s (± 1.96%) | +0.02s (+ 4.07%) | 0.60s | 0.66s | Check Time | 5.07s (± 0.65%) | 4.86s (± 0.34%) | 🟩-0.21s (- 4.09%) | 4.83s | 4.91s | Emit Time | 3.08s (± 0.78%) | 2.78s (± 1.27%) | 🟩-0.30s (- 9.61%) | 2.73s | 2.87s | Total Time | 10.07s (± 0.59%) | 9.59s (± 0.44%) | 🟩-0.48s (- 4.78%) | 9.49s | 9.67s | material-ui - node (v14.15.1, x64) |
---|
Memory used | 430,750k (± 0.00%) | 446,409k (± 0.01%) | +15,658k (+ 3.64%) | 446,328k | 446,454k | Parse Time | 1.87s (± 0.67%) | 1.87s (± 0.36%) | +0.00s (+ 0.11%) | 1.86s | 1.89s | Bind Time | 0.53s (± 1.40%) | 0.55s (± 0.85%) | +0.02s (+ 3.19%) | 0.54s | 0.56s | Check Time | 12.29s (± 0.73%) | 12.17s (± 0.75%) | -0.13s (- 1.04%) | 11.98s | 12.32s | Emit Time | 0.00s (± 0.00%) | 0.00s (± 0.00%) | 0.00s ( NaN%) | 0.00s | 0.00s | Total Time | 14.70s (± 0.63%) | 14.59s (± 0.64%) | -0.11s (- 0.75%) | 14.40s | 14.77s | xstate - node (v14.15.1, x64) |
---|
Memory used | 504,228k (± 0.00%) | 539,071k (± 0.00%) | +34,844k (+ 6.91%) | 539,033k | 539,141k | Parse Time | 2.63s (± 0.50%) | 2.65s (± 0.64%) | +0.02s (+ 0.65%) | 2.62s | 2.70s | Bind Time | 0.84s (± 0.62%) | 0.83s (± 0.60%) | -0.01s (- 0.71%) | 0.82s | 0.84s | Check Time | 1.48s (± 0.61%) | 1.47s (± 0.61%) | -0.01s (- 0.61%) | 1.44s | 1.48s | Emit Time | 0.07s (± 0.00%) | 0.07s (± 0.00%) | 0.00s ( 0.00%) | 0.07s | 0.07s | Total Time | 5.02s (± 0.34%) | 5.02s (± 0.45%) | -0.00s (- 0.04%) | 4.96s | 5.08s |
SystemMachine Name | ts-ci-ubuntu |
---|
Platform | linux 5.4.0-131-generic |
---|
Architecture | x64 |
---|
Available Memory | 16 GB |
---|
Available Memory | 15 GB |
---|
CPUs | 4 × 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 | 51682 | 10 | Baseline | main | 10 |
TSServerComparison Report - main..51682Metric | main | 51682 | Delta | Best | Worst |
---|
Compiler-UnionsTSServer - node (v18.10.0, x64) |
---|
Req 1 - updateOpen | 1,057ms (± 1.02%) | 1,058ms (± 0.87%) | +1ms (+ 0.09%) | 1,040ms | 1,079ms | Req 2 - geterr | 2,592ms (± 1.16%) | 2,533ms (± 0.92%) | -59ms (- 2.29%) | 2,482ms | 2,574ms | Req 3 - references | 166ms (± 0.57%) | 164ms (± 0.73%) | -1ms (- 0.78%) | 161ms | 167ms | Req 4 - navto | 140ms (± 1.75%) | 143ms (± 1.70%) | +4ms (+ 2.51%) | 139ms | 151ms | Req 5 - completionInfo count | 1,356 (± 0.00%) | 1,356 (± 0.00%) | 0 ( 0.00%) | 1,356 | 1,356 | Req 5 - completionInfo | 62ms (± 2.20%) | 53ms (± 7.31%) | 🟩-8ms (-13.59%) | 48ms | 62ms | CompilerTSServer - node (v18.10.0, x64) |
---|
Req 1 - updateOpen | 1,106ms (± 0.79%) | 1,138ms (± 0.47%) | +32ms (+ 2.87%) | 1,129ms | 1,156ms | Req 2 - geterr | 1,596ms (± 0.64%) | 1,571ms (± 0.62%) | -25ms (- 1.57%) | 1,553ms | 1,591ms | Req 3 - references | 170ms (± 0.84%) | 172ms (± 0.91%) | +3ms (+ 1.59%) | 170ms | 177ms | Req 4 - navto | 151ms (± 0.59%) | 153ms (± 1.04%) | +2ms (+ 1.06%) | 150ms | 156ms | Req 5 - completionInfo count | 1,518 (± 0.00%) | 1,518 (± 0.00%) | 0 ( 0.00%) | 1,518 | 1,518 | Req 5 - completionInfo | 54ms (± 1.89%) | 54ms (± 1.41%) | +0ms (+ 0.19%) | 52ms | 56ms | xstateTSServer - node (v18.10.0, x64) |
---|
Req 1 - updateOpen | 1,513ms (± 0.62%) | 1,566ms (± 1.10%) | +53ms (+ 3.51%) | 1,536ms | 1,620ms | Req 2 - geterr | 555ms (± 1.14%) | 535ms (± 0.83%) | 🟩-21ms (- 3.69%) | 523ms | 540ms | Req 3 - references | 58ms (± 1.16%) | 57ms (± 2.44%) | -1ms (- 2.08%) | 54ms | 60ms | Req 4 - navto | 197ms (± 0.66%) | 193ms (± 0.66%) | -3ms (- 1.73%) | 191ms | 195ms | Req 5 - completionInfo count | 3,154 (± 0.00%) | 3,154 (± 0.00%) | 0 ( 0.00%) | 3,154 | 3,154 | Req 5 - completionInfo | 212ms (± 0.80%) | 215ms (± 1.65%) | +2ms (+ 1.04%) | 205ms | 222ms | Compiler-UnionsTSServer - node (v16.17.1, x64) |
---|
Req 1 - updateOpen | 1,310ms (± 0.53%) | 1,329ms (± 0.55%) | +19ms (+ 1.41%) | 1,312ms | 1,346ms | Req 2 - geterr | 3,195ms (± 0.71%) | 3,161ms (± 0.99%) | -34ms (- 1.06%) | 3,077ms | 3,244ms | Req 3 - references | 192ms (± 0.83%) | 195ms (± 1.57%) | +3ms (+ 1.77%) | 189ms | 204ms | Req 4 - navto | 152ms (± 0.98%) | 155ms (± 0.97%) | +3ms (+ 1.64%) | 151ms | 157ms | Req 5 - completionInfo count | 1,356 (± 0.00%) | 1,356 (± 0.00%) | 0 ( 0.00%) | 1,356 | 1,356 | Req 5 - completionInfo | 63ms (± 5.11%) | 58ms (± 1.53%) | 🟩-5ms (- 7.30%) | 57ms | 60ms | CompilerTSServer - node (v16.17.1, x64) |
---|
Req 1 - updateOpen | 1,393ms (± 0.74%) | 1,421ms (± 0.67%) | +28ms (+ 2.00%) | 1,399ms | 1,438ms | Req 2 - geterr | 2,109ms (± 0.48%) | 2,058ms (± 0.59%) | -51ms (- 2.42%) | 2,033ms | 2,079ms | Req 3 - references | 200ms (± 0.45%) | 202ms (± 0.64%) | +2ms (+ 0.95%) | 198ms | 203ms | Req 4 - navto | 167ms (± 1.45%) | 168ms (± 1.17%) | +1ms (+ 0.60%) | 165ms | 173ms | Req 5 - completionInfo count | 1,518 (± 0.00%) | 1,518 (± 0.00%) | 0 ( 0.00%) | 1,518 | 1,518 | Req 5 - completionInfo | 56ms (± 0.71%) | 57ms (± 1.32%) | +1ms (+ 1.07%) | 55ms | 58ms | xstateTSServer - node (v16.17.1, x64) |
---|
Req 1 - updateOpen | 1,834ms (± 0.36%) | 1,877ms (± 0.72%) | +43ms (+ 2.33%) | 1,840ms | 1,904ms | Req 2 - geterr | 725ms (± 0.49%) | 699ms (± 0.30%) | 🟩-26ms (- 3.61%) | 694ms | 704ms | Req 3 - references | 68ms (± 0.77%) | 68ms (± 1.77%) | -0ms (- 0.29%) | 65ms | 70ms | Req 4 - navto | 200ms (± 0.58%) | 196ms (± 0.95%) | -4ms (- 1.80%) | 191ms | 200ms | Req 5 - completionInfo count | 3,154 (± 0.00%) | 3,154 (± 0.00%) | 0 ( 0.00%) | 3,154 | 3,154 | Req 5 - completionInfo | 254ms (± 0.69%) | 258ms (± 1.28%) | +4ms (+ 1.49%) | 252ms | 266ms | Compiler-UnionsTSServer - node (v14.15.1, x64) |
---|
Req 1 - updateOpen | 1,461ms (± 0.52%) | 1,471ms (± 0.82%) | +10ms (+ 0.65%) | 1,451ms | 1,501ms | Req 2 - geterr | 3,447ms (± 0.78%) | 3,355ms (± 0.54%) | -92ms (- 2.66%) | 3,314ms | 3,397ms | Req 3 - references | 206ms (± 0.18%) | 210ms (± 0.85%) | +4ms (+ 1.74%) | 207ms | 214ms | Req 4 - navto | 163ms (± 0.38%) | 170ms (± 0.98%) | +7ms (+ 4.17%) | 166ms | 174ms | Req 5 - completionInfo count | 1,356 (± 0.00%) | 1,356 (± 0.00%) | 0 ( 0.00%) | 1,356 | 1,356 | Req 5 - completionInfo | 58ms (± 1.29%) | 59ms (± 1.61%) | +1ms (+ 1.73%) | 57ms | 62ms | CompilerTSServer - node (v14.15.1, x64) |
---|
Req 1 - updateOpen | 1,537ms (± 0.45%) | 1,572ms (± 0.24%) | +35ms (+ 2.29%) | 1,562ms | 1,580ms | Req 2 - geterr | 2,287ms (± 0.47%) | 2,205ms (± 0.36%) | 🟩-82ms (- 3.57%) | 2,187ms | 2,227ms | Req 3 - references | 217ms (± 0.84%) | 219ms (± 0.92%) | +2ms (+ 0.97%) | 215ms | 224ms | Req 4 - navto | 175ms (± 0.99%) | 179ms (± 0.72%) | +4ms (+ 2.52%) | 176ms | 181ms | Req 5 - completionInfo count | 1,518 (± 0.00%) | 1,518 (± 0.00%) | 0 ( 0.00%) | 1,518 | 1,518 | Req 5 - completionInfo | 56ms (± 1.47%) | 60ms (± 2.45%) | +4ms (+ 6.21%) | 57ms | 63ms | xstateTSServer - node (v14.15.1, x64) |
---|
Req 1 - updateOpen | 2,018ms (± 0.86%) | 1,987ms (± 0.49%) | -31ms (- 1.53%) | 1,973ms | 2,019ms | Req 2 - geterr | 750ms (± 0.63%) | 737ms (± 0.65%) | -13ms (- 1.76%) | 730ms | 750ms | Req 3 - references | 73ms (± 1.23%) | 73ms (± 1.15%) | +1ms (+ 0.69%) | 72ms | 76ms | Req 4 - navto | 219ms (± 0.64%) | 212ms (± 0.94%) | 🟩-7ms (- 3.33%) | 208ms | 218ms | Req 5 - completionInfo count | 3,154 (± 0.00%) | 3,154 (± 0.00%) | 0 ( 0.00%) | 3,154 | 3,154 | Req 5 - completionInfo | 273ms (± 1.66%) | 281ms (± 1.46%) | +7ms (+ 2.71%) | 272ms | 288ms |
SystemMachine Name | ts-ci-ubuntu |
---|
Platform | linux 5.4.0-131-generic |
---|
Architecture | x64 |
---|
Available Memory | 16 GB |
---|
Available Memory | 15 GB |
---|
CPUs | 4 × 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 | 51682 | 10 | Baseline | main | 10 |
StartupComparison Report - main..51682Metric | main | 51682 | Delta | Best | Worst |
---|
tsc-startup - node (v16.17.1, x64) |
---|
Execution time | 120.48ms (± 0.61%) | 117.75ms (± 0.43%) | -2.73ms (- 2.26%) | 115.38ms | 129.08ms | tsserver-startup - node (v16.17.1, x64) |
---|
Execution time | 201.08ms (± 0.48%) | 199.17ms (± 0.40%) | -1.91ms (- 0.95%) | 195.18ms | 210.37ms | tsserverlibrary-startup - node (v16.17.1, x64) |
---|
Execution time | 195.97ms (± 0.39%) | 193.30ms (± 0.43%) | -2.67ms (- 1.36%) | 189.50ms | 201.28ms | typescript-startup - node (v16.17.1, x64) |
---|
Execution time | 179.65ms (± 0.45%) | 179.68ms (± 0.44%) | +0.02ms (+ 0.01%) | 174.98ms | 185.97ms |
SystemMachine Name | ts-ci-ubuntu |
---|
Platform | linux 5.4.0-131-generic |
---|
Architecture | x64 |
---|
Available Memory | 16 GB |
---|
Available Memory | 15 GB |
---|
CPUs | 4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz |
---|
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 | 51682 | 10 | Baseline | main | 10 |
Developer Information:Download Benchmark |
Uh oh!
There was an error while loading.Please reload this page.
We have a number of places in our codebase where we optionally attach properties to a
Node
. While a common practice in JS, this can sometimes have negative consequences with regards to runtime performance. Most modern JavaScript engines use Inline Caches (ICs) to optimize code paths, primarily when reading or writing to properties on objects, or to global variables.Ideally, we want property ICs to be "monomorphic", such that they only ever see a single object shape (or "map" in V8 parlance) as "monomorphic" property ICs provide the fastest lookups. A "polymorphic" IC has slightly worse performance since it shifts from a one-to-one lookup to a short list of "map"-> property entries. If a new "map" is encountered once a polymorphic IC has around four entries, V8 will shift to a "megamporphic" IC. "Megamorphic" property ICs are the worst in terms of performance, as V8 essentially gives up on fast property access and relies on slow property lookups (there is still a cache, but it is cyclical: repeated property lookups for the same "map" will be fast but will age out as new "maps" are encountered).
Monomorphism isn't always possible, especially when accessing properties like
.kind
. However, in cases where we have branched on.kind
, we should endeavor to ensure that further property accesses within that branch remain monomorphic, or at least polymorphic.One way to achieve this is to ensure the shape of every
Node
is stable relative to itskind
. This has the following implications:Node
and its subtypes really shouldn't be "optional" and should be fully initialized when aNode
is produced (even if only withundefined
).node as any as JSDocContainer
andnode as TypeNode & { <optional properties> }
).symbol
,localSymbol
,locals
,nextContainer
,flowNode
, etc.), as that results in uncheckednode.symbol
accesses which often result in "wrong map" deoptimizations.kind
when the node is a supertype or union, unless the function is only accessing one or two properties (likepos
/end
) since a megamorphic lookup on "pos" will have the same cost as a megamorpic lookup on "kind".Node
subtype, especially if it accesses multiple properties.There is a trade-off for these changes, however. Pre-defining potentially unused properties on a
Node
increases the memory footprint. As such, if the memory cost becomes too severe, we may want to investigate removing properties from someNode
subtypes where the value can be trivially recomputed from source or moved into a cache likeNodeLinks
orEmitNode
.