Cache discriminated contextual types by ahejlsberg · Pull Request #58372 · microsoft/TypeScript (original) (raw)

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

Here they are:

tsc

Comparison Report - baseline..pr

Metric baseline pr Delta Best Worst p-value
Compiler-Unions - node (v18.15.0, x64)
Errors 30 30 ~ ~ ~ p=1.000 n=6
Symbols 62,154 62,154 ~ ~ ~ p=1.000 n=6
Types 50,273 50,273 ~ ~ ~ p=1.000 n=6
Memory used 193,518k (± 0.92%) 194,037k (± 1.02%) ~ 192,208k 196,008k p=1.000 n=6
Parse Time 1.31s (± 0.96%) 1.31s (± 0.64%) ~ 1.29s 1.31s p=0.735 n=6
Bind Time 0.72s 0.72s ~ ~ ~ p=1.000 n=6
Check Time 9.55s (± 0.39%) 9.55s (± 0.28%) ~ 9.51s 9.59s p=1.000 n=6
Emit Time 2.62s (± 0.62%) 2.63s (± 0.54%) ~ 2.61s 2.65s p=0.194 n=6
Total Time 14.19s (± 0.39%) 14.20s (± 0.18%) ~ 14.16s 14.23s p=1.000 n=6
angular-1 - node (v18.15.0, x64)
Errors 5 5 ~ ~ ~ p=1.000 n=6
Symbols 945,322 945,923 +601 (+ 0.06%) ~ ~ p=0.001 n=6
Types 408,088 408,398 +310 (+ 0.08%) ~ ~ p=0.001 n=6
Memory used 1,222,099k (± 0.00%) 1,222,740k (± 0.00%) +641k (+ 0.05%) 1,222,660k 1,222,828k p=0.005 n=6
Parse Time 6.77s (± 0.76%) 6.77s (± 0.46%) ~ 6.75s 6.83s p=0.807 n=6
Bind Time 1.87s (± 0.44%) 1.87s (± 0.52%) ~ 1.86s 1.88s p=0.862 n=6
Check Time 31.45s (± 0.56%) 31.26s (± 0.30%) ~ 31.13s 31.38s p=0.109 n=6
Emit Time 14.63s (± 1.19%) 14.74s (± 0.52%) ~ 14.64s 14.82s p=0.199 n=6
Total Time 54.72s (± 0.49%) 54.65s (± 0.30%) ~ 54.46s 54.86s p=0.809 n=6
mui-docs - node (v18.15.0, x64)
Errors 5 5 ~ ~ ~ p=1.000 n=6
Symbols 1,955,956 1,999,695 +43,739 (+ 2.24%) ~ ~ p=0.001 n=6
Types 676,324 681,527 +5,203 (+ 0.77%) ~ ~ p=0.001 n=6
Memory used 1,754,535k (± 0.00%) 1,781,555k (± 0.00%) +27,020k (+ 1.54%) 1,781,507k 1,781,587k p=0.005 n=6
Parse Time 6.71s (± 0.36%) 6.71s (± 0.37%) ~ 6.68s 6.74s p=0.936 n=6
Bind Time 2.31s (± 0.52%) 2.30s (± 0.27%) ~ 2.29s 2.31s p=0.340 n=6
Check Time 56.86s (± 0.38%) 56.58s (± 0.31%) -0.28s (- 0.50%) 56.27s 56.77s p=0.037 n=6
Emit Time 0.14s (± 2.95%) 0.14s (± 2.88%) ~ 0.14s 0.15s p=0.218 n=6
Total Time 66.01s (± 0.34%) 65.72s (± 0.27%) ~ 65.44s 65.92s p=0.054 n=6
self-build-src - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 1,215,731 1,216,274 +543 (+ 0.04%) ~ ~ p=0.001 n=6
Types 257,647 257,948 +301 (+ 0.12%) ~ ~ p=0.001 n=6
Memory used 2,324,685k (± 0.03%) 2,322,980k (± 0.02%) -1,705k (- 0.07%) 2,322,555k 2,323,639k p=0.005 n=6
Parse Time 4.96s (± 0.16%) 4.97s (± 0.77%) ~ 4.92s 5.03s p=0.258 n=6
Bind Time 1.88s (± 0.62%) 1.87s (± 1.37%) ~ 1.85s 1.91s p=0.328 n=6
Check Time 34.04s (± 0.35%) 33.49s (± 0.46%) -0.54s (- 1.59%) 33.24s 33.64s p=0.005 n=6
Emit Time 2.59s (± 2.50%) 2.62s (± 2.53%) ~ 2.51s 2.69s p=0.378 n=6
Total Time 43.47s (± 0.39%) 42.97s (± 0.42%) -0.50s (- 1.15%) 42.71s 43.18s p=0.005 n=6
self-build-src-public-api - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 1,215,731 1,216,274 +543 (+ 0.04%) ~ ~ p=0.001 n=6
Types 257,647 257,948 +301 (+ 0.12%) ~ ~ p=0.001 n=6
Memory used 2,398,813k (± 0.02%) 2,398,153k (± 0.02%) ~ 2,397,364k 2,398,623k p=0.066 n=6
Parse Time 6.21s (± 1.04%) 6.24s (± 1.17%) ~ 6.14s 6.33s p=0.688 n=6
Bind Time 2.03s (± 1.60%) 2.02s (± 0.68%) ~ 2.01s 2.05s p=0.332 n=6
Check Time 40.63s (± 0.32%) 39.85s (± 0.28%) -0.78s (- 1.93%) 39.75s 40.05s p=0.005 n=6
Emit Time 3.13s (± 2.12%) 3.11s (± 1.68%) ~ 3.02s 3.17s p=0.575 n=6
Total Time 52.02s (± 0.14%) 51.24s (± 0.24%) -0.78s (- 1.51%) 51.08s 51.43s p=0.005 n=6
self-compiler - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 256,206 256,432 +226 (+ 0.09%) ~ ~ p=0.001 n=6
Types 103,653 103,607 -46 (- 0.04%) ~ ~ p=0.001 n=6
Memory used 424,264k (± 0.00%) 424,324k (± 0.01%) +61k (+ 0.01%) 424,278k 424,372k p=0.008 n=6
Parse Time 3.32s (± 1.62%) 3.34s (± 0.99%) ~ 3.29s 3.38s p=0.629 n=6
Bind Time 1.30s (± 0.58%) 1.30s (± 0.80%) ~ 1.28s 1.31s p=0.437 n=6
Check Time 18.27s (± 0.35%) 17.73s (± 0.20%) -0.53s (- 2.92%) 17.70s 17.80s p=0.005 n=6
Emit Time 1.35s (± 1.09%) 1.37s (± 1.22%) ~ 1.35s 1.39s p=0.087 n=6
Total Time 24.24s (± 0.38%) 23.74s (± 0.26%) -0.50s (- 2.06%) 23.67s 23.84s p=0.005 n=6
ts-pre-modules - node (v18.15.0, x64)
Errors 35 35 ~ ~ ~ p=1.000 n=6
Symbols 224,824 225,034 +210 (+ 0.09%) ~ ~ p=0.001 n=6
Types 93,390 93,347 -43 (- 0.05%) ~ ~ p=0.001 n=6
Memory used 369,288k (± 0.01%) 369,416k (± 0.02%) +128k (+ 0.03%) 369,344k 369,598k p=0.005 n=6
Parse Time 3.49s (± 0.97%) 3.51s (± 0.42%) ~ 3.49s 3.53s p=0.167 n=6
Bind Time 1.92s (± 0.64%) 1.94s (± 1.64%) ~ 1.91s 1.98s p=0.675 n=6
Check Time 19.43s (± 0.33%) 19.33s (± 0.29%) -0.10s (- 0.51%) 19.23s 19.38s p=0.013 n=6
Emit Time 0.00s 0.00s ~ ~ ~ p=1.000 n=6
Total Time 24.84s (± 0.27%) 24.78s (± 0.33%) ~ 24.64s 24.85s p=0.230 n=6
vscode - node (v18.15.0, x64)
Errors 4 4 ~ ~ ~ p=1.000 n=6
Symbols 2,799,544 2,801,275 +1,731 (+ 0.06%) ~ ~ p=0.001 n=6
Types 950,964 950,758 -206 (- 0.02%) ~ ~ p=0.001 n=6
Memory used 2,927,051k (± 0.01%) 2,927,911k (± 0.01%) +860k (+ 0.03%) 2,927,421k 2,928,160k p=0.005 n=6
Parse Time 13.38s (± 0.53%) 13.31s (± 0.26%) ~ 13.28s 13.37s p=0.076 n=6
Bind Time 4.29s (± 0.27%) 4.16s (± 2.77%) ~ 4.08s 4.32s p=0.167 n=6
Check Time 73.00s (± 0.31%) 72.58s (± 0.37%) -0.42s (- 0.57%) 72.30s 73.03s p=0.031 n=6
Emit Time 21.05s (± 7.68%) 21.11s (± 8.23%) ~ 19.55s 23.35s p=0.575 n=6
Total Time 111.72s (± 1.46%) 111.16s (± 1.40%) ~ 109.47s 113.18s p=0.471 n=6
webpack - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 265,858 265,858 ~ ~ ~ p=1.000 n=6
Types 108,442 108,442 ~ ~ ~ p=1.000 n=6
Memory used 410,483k (± 0.02%) 410,427k (± 0.01%) ~ 410,349k 410,496k p=0.128 n=6
Parse Time 4.77s (± 1.18%) 4.74s (± 0.71%) ~ 4.71s 4.80s p=0.333 n=6
Bind Time 2.08s (± 0.95%) 2.06s (± 0.90%) ~ 2.04s 2.09s p=0.280 n=6
Check Time 21.18s (± 0.22%) 20.98s (± 0.17%) -0.20s (- 0.95%) 20.92s 21.02s p=0.005 n=6
Emit Time 0.00s 0.00s ~ ~ ~ p=1.000 n=6
Total Time 28.03s (± 0.32%) 27.79s (± 0.24%) -0.24s (- 0.87%) 27.69s 27.89s p=0.005 n=6
xstate-main - node (v18.15.0, x64)
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 524,146 553,173 🔻+29,027 (+ 5.54%) ~ ~ p=0.001 n=6
Types 178,732 188,311 🔻+9,579 (+ 5.36%) ~ ~ p=0.001 n=6
Memory used 461,380k (± 0.02%) 476,795k (± 0.03%) +15,416k (+ 3.34%) 476,628k 476,998k p=0.005 n=6
Parse Time 3.89s (± 0.32%) 3.89s (± 0.70%) ~ 3.85s 3.93s p=1.000 n=6
Bind Time 1.46s (± 1.28%) 1.47s (± 1.34%) ~ 1.43s 1.48s p=0.870 n=6
Check Time 22.56s (± 0.79%) 22.78s (± 0.40%) +0.23s (+ 1.00%) 22.68s 22.92s p=0.031 n=6
Emit Time 0.00s 0.00s ~ ~ ~ p=1.000 n=6
Total Time 27.91s (± 0.62%) 28.14s (± 0.42%) +0.23s (+ 0.82%) 27.99s 28.28s p=0.045 n=6

System info unknown

Hosts

Scenarios

Benchmark Name Iterations
Current pr 6
Baseline baseline 6

Developer Information:

Download Benchmarks