Skip to content

Count intersection property names with a plain map and slice - #64876

Merged
Jake Bailey (jakebailey) merged 1 commit into
microsoft:mainfrom
jakebailey:perf/intersection-name-counts
Oct 28, 2026
Merged

Jake Bailey (jakebailey) merged 1 commit into
microsoft:mainfrom
jakebailey:perf/intersection-name-counts

Conversation

@jakebailey

@jakebailey Jake Bailey (jakebailey) commented Oct 19, 2026 •

Copy link
Copy Markdown
Member
                  │   old.txt   │             new.txt              │
                  │   sec/op    │   sec/op    vs base              │
Tsc/bluesky          2.430 ± 2%   2.383 ± 3%       ~ (p=0.180 n=6)
Tsc/sentry          10.044 ± 1%   9.931 ± 2%       ~ (p=0.180 n=6)
Tsc/t3code-server    8.038 ± 1%   7.904 ± 2%  -1.67% (p=0.026 n=6)
Tsc/mui-docs         6.518 ± 2%   6.138 ± 3%  -5.83% (p=0.002 n=6)
geomean              5.980        5.821       -2.66%

                  │   old.txt    │              new.txt               │
                  │    rss-B     │    rss-B      vs base              │
Tsc/bluesky         1.189Gi ± 3%   1.176Gi ± 4%       ~ (p=0.485 n=6)
Tsc/sentry          3.271Gi ± 4%   3.215Gi ± 6%       ~ (p=0.240 n=6)
Tsc/t3code-server   2.753Gi ± 5%   2.776Gi ± 6%       ~ (p=0.937 n=6)
Tsc/mui-docs        2.362Gi ± 7%   2.314Gi ± 5%       ~ (p=0.699 n=6)
geomean             2.242Gi        2.220Gi       -0.99%

                  │   old.txt    │              new.txt               │
                  │    heap-B    │    heap-B     vs base              │
Tsc/bluesky         915.2Mi ± 0%   914.9Mi ± 0%       ~ (p=0.699 n=6)
Tsc/sentry          2.483Gi ± 0%   2.482Gi ± 0%       ~ (p=0.818 n=6)
Tsc/t3code-server   2.179Gi ± 0%   2.180Gi ± 0%       ~ (p=0.394 n=6)
Tsc/mui-docs        1.732Gi ± 0%   1.732Gi ± 0%       ~ (p=0.310 n=6)
geomean             1.701Gi        1.701Gi       -0.00%

This will conflict with #64815 to some extent

Copilot AI balanced review requested due to automatic review settings October 19, 2026 18:45
@github-project-automation github-project-automation Bot moved this to Not started in PR Backlog Oct 19, 2026
@typescript-automation typescript-automation Bot added Author: Team For Uncommitted Bug PR for untriaged, rejected, closed or missing bug labels Oct 19, 2026
@jakebailey

Copy link
Copy Markdown
Member Author

TypeScript Bot (@typescript-bot) perf test this faster

@typescript-automation

typescript-automation Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Starting jobs; this comment will be updated as builds start and complete.

Command Status Results
perf test this faster ✅ Started 👀 Results

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟢 Approval recommended

Static review found no blocking issues in this localized refactor; automated validation was not run.

1 open issue
What changed in this PR

Optimizes property counting when the checker determines whether an intersection reduces to never, while preserving first-occurrence order.

Changes:

  • Replaces the ordered map with a name-to-index map and count slice.
  • Skips lookups for the first constituent’s properties.
  • Updates counting and workspace-reuse tests.
File Description
tsc/​internal/​checker/​utilities.go Implements map-and-slice property counts.
tsc/​internal/​checker/​types_test.go Adapts counting and reuse assertions.
tsc/​internal/​checker/​checker.go Uses the new counting operations during intersection reduction.

Review effort: Balanced

Comment on lines +937 to +938
entries []propertyCount
indices map[string]int32
@typescript-automation

Copy link
Copy Markdown
Contributor

Jake Bailey (@jakebailey)
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 - native
Errors 41 41 ~ ~ ~ p=1.000 n=12
Symbols 115,276 115,276 ~ ~ ~ p=1.000 n=12
Types 79,613 79,613 ~ ~ ~ p=1.000 n=12
Memory Used 113,611k (± 0.07%) 113,461k (± 0.04%) -150k (- 0.13%) 113,372k 113,611k p=0.003 n=12
Memory Allocs 2,212,588 (± 0.00%) 2,212,505 (± 0.01%) ~ 2,212,245 2,212,961 p=0.266 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.039s (± 4.10%) 0.040s (± 3.57%) ~ 0.037s 0.044s p=0.480 n=12
Bind Time 0.014s (± 9.58%) 0.014s (± 8.31%) ~ 0.011s 0.017s p=0.830 n=12
Check Time 0.467s (± 0.82%) 0.471s (± 0.64%) ~ 0.465s 0.480s p=0.070 n=12
Emit Time 0.275s (± 2.12%) 0.269s (± 2.63%) ~ 0.253s 0.285s p=0.247 n=12
Total Time 0.802s (± 0.95%) 0.800s (± 0.82%) ~ 0.787s 0.818s p=0.681 n=12
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=12
Symbols 847,269 (± 0.06%) 847,364 (± 0.08%) ~ 845,490 849,037 p=0.843 n=12
Types 247,031 (± 0.00%) 247,035 (± 0.00%) +3 (+ 0.00%) 247,029 247,045 p=0.016 n=12
Memory Used 596,362k (± 0.02%) 596,381k (± 0.03%) ~ 595,851k 596,863k p=0.799 n=12
Memory Allocs 13,139,205 (± 0.03%) 13,148,114 (± 0.07%) ~ 13,134,175 13,175,783 p=0.078 n=12
Config Time 0.017s (± 1.45%) 0.017s (± 1.70%) ~ 0.016s 0.017s p=1.000 n=12
Parse Time 0.221s (± 1.77%) 0.228s (± 2.77%) ~ 0.214s 0.242s p=0.091 n=12
Bind Time 0.081s (±11.65%) 0.074s (±15.34%) ~ 0.058s 0.102s p=0.213 n=12
Check Time 0s 0s ~ ~ ~ p=1.000 n=12
Emit Time 1.561s (± 1.37%) 1.577s (± 1.32%) ~ 1.532s 1.647s p=0.325 n=12
Total Time 1.902s (± 1.39%) 1.916s (± 1.04%) ~ 1.880s 1.971s p=0.434 n=12
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=12
Symbols 4,331,983 4,331,983 ~ ~ ~ p=1.000 n=12
Types 1,370,520 1,370,520 ~ ~ ~ p=1.000 n=12
Memory Used 2,624,694k (± 0.03%) 2,626,152k (± 0.05%) ~ 2,622,356k 2,629,755k p=0.052 n=12
Memory Allocs 27,713,795 (± 0.08%) 27,713,469 (± 0.05%) ~ 27,661,441 27,738,171 p=0.671 n=12
Config Time 0.017s (± 1.70%) 0.017s (± 1.45%) ~ 0.016s 0.017s p=1.000 n=12
Parse Time 0.466s (± 3.53%) 0.478s (± 3.09%) ~ 0.440s 0.513s p=0.202 n=12
Bind Time 0.002s 0.002s ~ ~ ~ p=1.000 n=12
Check Time 7.222s (± 0.13%) 6.973s (± 0.62%) 🟩-0.249s (- 3.45%) 6.855s 7.125s p=0.000 n=12
Emit Time 0.566s (±11.48%) 0.524s (±13.72%) ~ 0.417s 0.661s p=0.352 n=12
Total Time 9.012s (± 0.82%) 8.726s (± 1.21%) 🟩-0.286s (- 3.17%) 8.532s 8.929s p=0.000 n=12
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,388,680 1,388,680 ~ ~ ~ p=1.000 n=12
Types 441,862 441,862 ~ ~ ~ p=1.000 n=12
Memory Used 1,311,304k (± 0.49%) 1,316,572k (± 0.55%) ~ 1,300,268k 1,343,645k p=0.143 n=12
Memory Allocs 78,204,684 (± 0.14%) 78,244,813 (± 0.10%) ~ 77,942,738 78,401,237 p=0.671 n=12
Config Time 0.003s (±12.31%) 0.003s (± 9.48%) ~ 0.003s 0.004s p=1.000 n=12
Parse Time 0.255s (± 2.42%) 0.251s (± 1.44%) ~ 0.242s 0.260s p=0.181 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 1.679s (± 0.46%) 1.675s (± 0.52%) ~ 1.648s 1.696s p=0.451 n=12
Emit Time 0.290s (± 3.30%) 0.304s (± 3.61%) 🔻+0.015s (+ 5.06%) 0.286s 0.345s p=0.027 n=12
Total Time 19.823s (± 0.63%) 19.908s (± 0.71%) ~ 19.415s 20.223s p=0.319 n=12
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 334,953 334,953 ~ ~ ~ p=1.000 n=12
Types 197,616 197,616 ~ ~ ~ p=1.000 n=12
Memory Used 247,491k (± 0.04%) 247,503k (± 0.02%) ~ 247,424k 247,698k p=1.000 n=12
Memory Allocs 4,329,337 (± 0.01%) 4,330,004 (± 0.01%) +667 (+ 0.02%) 4,328,447 4,330,998 p=0.045 n=12
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=12
Parse Time 0.112s (± 4.22%) 0.114s (± 4.07%) ~ 0.099s 0.124s p=0.400 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 0.965s (± 0.58%) 0.968s (± 0.74%) ~ 0.954s 0.985s p=0.284 n=12
Emit Time 0.146s (± 3.46%) 0.154s (± 4.88%) ~ 0.134s 0.170s p=0.070 n=12
Total Time 1.276s (± 0.74%) 1.294s (± 0.85%) +0.018s (+ 1.41%) 1.271s 1.322s p=0.027 n=12
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=12
Symbols 303,834 303,834 ~ ~ ~ p=1.000 n=12
Types 181,663 181,663 ~ ~ ~ p=1.000 n=12
Memory Used 215,252k (± 0.02%) 215,226k (± 0.02%) ~ 215,082k 215,331k p=0.272 n=12
Memory Allocs 1,401,488 (± 0.02%) 1,401,793 (± 0.01%) ~ 1,401,399 1,402,406 p=0.052 n=12
Config Time 0.000s 0.000s (±146.91%) ~ 0.000s 0.001s p=0.478 n=12
Parse Time 0.097s (± 3.48%) 0.098s (± 2.60%) ~ 0.093s 0.105s p=0.467 n=12
Bind Time 0.043s (± 6.32%) 0.042s (± 7.29%) ~ 0.032s 0.051s p=0.639 n=12
Check Time 0.745s (± 0.86%) 0.746s (± 0.57%) ~ 0.734s 0.757s p=0.898 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 0.900s (± 0.90%) 0.902s (± 0.62%) ~ 0.889s 0.918s p=0.504 n=12
vscode - native
Errors 396 396 ~ ~ ~ p=1.000 n=12
Symbols 12,501,426 12,501,426 ~ ~ ~ p=1.000 n=12
Types 4,091,299 4,091,299 ~ ~ ~ p=1.000 n=12
Memory Used 5,843,208k (± 0.01%) 5,843,893k (± 0.02%) ~ 5,841,588k 5,846,890k p=0.242 n=12
Memory Allocs 59,416,904 (± 0.01%) 59,424,090 (± 0.02%) ~ 59,410,476 59,471,687 p=0.078 n=12
Config Time 0.076s (± 0.48%) 0.076s (± 0.24%) ~ 0.076s 0.077s p=0.590 n=12
Parse Time 1.826s (± 2.06%) 1.803s (± 2.00%) ~ 1.742s 1.906s p=0.434 n=12
Bind Time 0.641s (±13.90%) 0.712s (±12.79%) ~ 0.527s 0.923s p=0.198 n=12
Check Time 14.703s (± 0.95%) 14.583s (± 0.99%) -0.119s (- 0.81%) 14.330s 14.847s p=0.050 n=12
Emit Time 5.322s (± 6.90%) 5.266s (± 6.37%) ~ 4.502s 5.920s p=0.713 n=12
Total Time 22.653s (± 1.32%) 22.531s (± 1.05%) ~ 21.993s 22.995s p=0.590 n=12
webpack - native
Errors 598 598 ~ ~ ~ p=1.000 n=12
Symbols 1,398,302 1,398,302 ~ ~ ~ p=1.000 n=12
Types 670,900 670,900 ~ ~ ~ p=1.000 n=12
Memory Used 885,544k (± 0.02%) 885,710k (± 0.02%) ~ 885,190k 885,997k p=0.114 n=12
Memory Allocs 6,928,895 (± 0.04%) 6,928,483 (± 0.03%) ~ 6,924,793 6,936,985 p=0.799 n=12
Config Time 0.009s 0.009s ~ ~ ~ p=1.000 n=12
Parse Time 0.317s (± 2.37%) 0.322s (± 3.67%) ~ 0.295s 0.349s p=0.451 n=12
Bind Time 0.079s (± 7.54%) 0.077s (± 3.36%) ~ 0.070s 0.085s p=1.000 n=12
Check Time 2.968s (± 0.25%) 2.965s (± 0.50%) ~ 2.934s 3.012s p=0.486 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 3.412s (± 0.33%) 3.411s (± 0.45%) ~ 3.364s 3.445s p=0.989 n=12
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,060,810 1,060,810 ~ ~ ~ p=1.000 n=12
Types 389,671 389,671 ~ ~ ~ p=1.000 n=12
Memory Used 471,880k (± 0.02%) 471,904k (± 0.02%) ~ 471,677k 472,246k p=0.671 n=12
Memory Allocs 4,221,665 (± 0.10%) 4,222,310 (± 0.08%) ~ 4,210,454 4,229,639 p=0.755 n=12
Config Time 0.003s 0.003s (± 8.64%) ~ 0.002s 0.003s p=0.478 n=12
Parse Time 0.134s (± 3.56%) 0.140s (± 2.86%) ~ 0.125s 0.148s p=0.085 n=12
Bind Time 0.045s (±12.71%) 0.044s (±17.39%) ~ 0.033s 0.065s p=0.527 n=12
Check Time 1.093s (± 0.99%) 1.092s (± 0.93%) ~ 1.070s 1.119s p=0.921 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 1.285s (± 0.86%) 1.287s (± 1.01%) ~ 1.251s 1.316s p=0.989 n=12
System info unknown
Hosts
  • native
Scenarios
  • Compiler-Unions - native
  • angular-1 - native
  • mui-docs - native
  • strada-build-src - native
  • strada-compiler - native
  • ts-pre-modules - native
  • vscode - native
  • webpack - native
  • xstate-main - native
Benchmark Name Iterations
Current pr 12
Baseline baseline 12

Developer Information:

Download Benchmarks

Deciding whether an intersection reduces to never counts how many
constituents declare each property name. The ordered map used for
this is a general-purpose structure that does more bookkeeping per
operation than this hot path needs, and each property costs a lookup
and an assignment. On mui-docs this shows up as a few percent of
single-checker time.

Count into a slice of entries indexed by a plain string map instead.
The slice keeps first-occurrence order for the reduction check, and
the first constituent's names are inserted without a lookup since
property names are already unique within a type.

                  │    old     │                new                │
                  │   sec/op   │   sec/op     vs base              │
Tsc/bluesky         3.179 ± 1%   3.133 ±  1%  -1.45% (p=0.039 n=6)
Tsc/sentry          12.90 ± 7%   12.77 ± 17%       ~ (p=0.818 n=6)
Tsc/t3code-server   16.85 ± 3%   16.80 ±  3%       ~ (p=0.937 n=6)
Tsc/mui-docs        8.536 ± 3%   8.152 ±  1%  -4.50% (p=0.002 n=6)
geomean             8.763        8.604        -1.81%

                  │     old      │                new                 │
                  │    rss-B     │    rss-B      vs base              │
Tsc/bluesky         1.439Gi ± 2%   1.417Gi ± 1%       ~ (p=0.093 n=6)
Tsc/sentry          4.566Gi ± 4%   4.504Gi ± 4%       ~ (p=0.937 n=6)
Tsc/t3code-server   4.488Gi ± 5%   4.344Gi ± 9%       ~ (p=0.485 n=6)
Tsc/mui-docs        3.535Gi ± 4%   3.391Gi ± 4%       ~ (p=0.065 n=6)
geomean             3.195Gi        3.114Gi       -2.55%

                  │     old      │                new                 │
                  │    heap-B    │    heap-B     vs base              │
Tsc/bluesky         1.153Gi ± 0%   1.152Gi ± 0%       ~ (p=0.394 n=6)
Tsc/sentry          3.620Gi ± 0%   3.622Gi ± 0%       ~ (p=0.485 n=6)
Tsc/t3code-server   3.761Gi ± 0%   3.762Gi ± 0%       ~ (p=0.310 n=6)
Tsc/mui-docs        2.641Gi ± 0%   2.641Gi ± 0%       ~ (p=0.818 n=6)
geomean             2.537Gi        2.537Gi       +0.01%
@jakebailey
Jake Bailey (jakebailey) force-pushed the perf/intersection-name-counts branch from ee41271 to 4f18092 Compare October 23, 2026 22:24
@jakebailey

Copy link
Copy Markdown
Member Author

TypeScript Bot (@typescript-bot) perf test

@typescript-automation

typescript-automation Bot commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

Starting jobs; this comment will be updated as builds start and complete.

Command Status Results
perf test ✅ Started 👀 Results

@typescript-automation

Copy link
Copy Markdown
Contributor

Jake Bailey (@jakebailey)
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 - native
Errors 41 41 ~ ~ ~ p=1.000 n=12
Symbols 88,466 88,466 ~ ~ ~ p=1.000 n=12
Types 79,607 79,607 ~ ~ ~ p=1.000 n=12
Memory Used 109,266k (± 0.07%) 109,206k (± 0.06%) ~ 109,078k 109,363k p=0.266 n=12
Memory Allocs 2,196,729 (± 0.00%) 2,196,699 (± 0.01%) ~ 2,196,350 2,197,251 p=0.340 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.049s (± 3.45%) 0.047s (± 4.65%) ~ 0.042s 0.054s p=0.101 n=12
Bind Time 0.017s (±10.09%) 0.017s (±10.59%) ~ 0.013s 0.021s p=0.919 n=12
Check Time 0.575s (± 0.79%) 0.578s (± 0.61%) ~ 0.569s 0.584s p=0.223 n=12
Emit Time 0.323s (± 2.74%) 0.326s (± 2.66%) ~ 0.304s 0.349s p=0.619 n=12
Total Time 0.972s (± 1.15%) 0.976s (± 1.08%) ~ 0.947s 1.001s p=0.560 n=12
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=12
Symbols 586,539 (± 0.01%) 586,410 (± 0.03%) ~ 586,027 586,782 p=0.192 n=12
Types 241,692 (± 0.00%) 241,692 (± 0.00%) ~ 241,690 241,695 p=0.928 n=12
Memory Used 551,134k (± 0.02%) 551,231k (± 0.02%) ~ 550,902k 551,564k p=0.235 n=12
Memory Allocs 13,081,109 (± 0.10%) 13,080,376 (± 0.08%) ~ 13,068,372 13,112,138 p=0.932 n=12
Config Time 0.020s (± 0.90%) 0.020s (± 1.21%) ~ 0.020s 0.021s p=1.000 n=12
Parse Time 0.280s (± 3.21%) 0.281s (± 2.93%) ~ 0.268s 0.310s p=0.810 n=12
Bind Time 0.097s (±15.97%) 0.101s (±13.27%) ~ 0.071s 0.137s p=0.876 n=12
Check Time 0s 0s ~ ~ ~ p=1.000 n=12
Emit Time 1.800s (± 1.62%) 1.808s (± 1.60%) ~ 1.733s 1.862s p=0.600 n=12
Total Time 2.218s (± 1.66%) 2.232s (± 1.46%) ~ 2.144s 2.295s p=0.451 n=12
arktype - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 685,943 685,943 ~ ~ ~ p=1.000 n=12
Types 939,490 939,490 ~ ~ ~ p=1.000 n=12
Memory Used 533,170k (± 0.01%) 533,256k (± 0.01%) ~ 533,157k 533,385k p=0.062 n=12
Memory Allocs 12,771,698 (± 0.02%) 12,771,931 (± 0.02%) ~ 12,768,729 12,777,870 p=0.713 n=12
Config Time 0.003s 0.003s ~ ~ ~ p=1.000 n=12
Parse Time 0.090s (± 4.32%) 0.089s (± 3.52%) ~ 0.082s 0.096s p=0.853 n=12
Bind Time 0.025s (± 3.96%) 0.026s (±10.67%) ~ 0.023s 0.036s p=0.594 n=12
Check Time 2.160s (± 0.55%) 2.145s (± 0.68%) ~ 2.099s 2.183s p=0.124 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 2.338s (± 0.22%) 2.321s (± 0.39%) -0.018s (- 0.75%) 2.296s 2.346s p=0.002 n=12
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=12
Symbols 3,784,027 3,784,027 ~ ~ ~ p=1.000 n=12
Types 1,355,982 1,355,982 ~ ~ ~ p=1.000 n=12
Memory Used 2,200,472k (± 0.07%) 2,199,877k (± 0.08%) ~ 2,194,421k 2,204,607k p=0.551 n=12
Memory Allocs 26,472,718 (± 0.06%) 26,453,182 (± 0.06%) ~ 26,409,362 26,498,155 p=0.114 n=12
Config Time 0.020s (± 0.90%) 0.020s (± 1.40%) ~ 0.020s 0.021s p=0.590 n=12
Parse Time 0.587s (± 3.79%) 0.585s (± 2.74%) ~ 0.554s 0.640s p=0.311 n=12
Bind Time 0.003s (±10.34%) 0.003s (±10.34%) ~ 0.002s 0.003s p=1.000 n=12
Check Time 7.087s (± 0.40%) 6.825s (± 0.54%) 🟩-0.262s (- 3.70%) 6.773s 6.931s p=0.000 n=12
Emit Time 0.584s (± 5.51%) 0.566s (± 2.82%) ~ 0.506s 0.593s p=0.876 n=12
Total Time 9.213s (± 0.52%) 8.931s (± 0.42%) 🟩-0.282s (- 3.07%) 8.871s 9.062s p=0.000 n=12
sentry - native
Errors 2 2 ~ ~ ~ p=1.000 n=12
Symbols 4,793,249 4,793,249 ~ ~ ~ p=1.000 n=12
Types 2,607,051 2,607,051 ~ ~ ~ p=1.000 n=12
Memory Used 3,207,233k (± 0.02%) 3,207,541k (± 0.06%) ~ 3,204,688k 3,214,180k p=0.590 n=12
Memory Allocs 75,231,191 (± 0.07%) 75,262,252 (± 0.08%) ~ 75,131,495 75,430,407 p=0.347 n=12
Config Time 0.060s (± 0.54%) 0.060s (± 0.41%) ~ 0.060s 0.061s p=0.193 n=12
Parse Time 1.016s (± 2.13%) 1.002s (± 2.79%) ~ 0.939s 1.065s p=0.701 n=12
Bind Time 0.288s (±13.25%) 0.349s (±13.95%) ~ 0.262s 0.451s p=0.061 n=12
Check Time 13.648s (± 0.63%) 13.658s (± 0.65%) ~ 13.462s 13.942s p=0.989 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 15.083s (± 0.66%) 15.142s (± 0.70%) ~ 14.965s 15.540s p=0.620 n=12
social-app - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,883,075 1,883,075 ~ ~ ~ p=1.000 n=12
Types 1,158,171 1,158,171 ~ ~ ~ p=1.000 n=12
Memory Used 1,057,496k (± 0.01%) 1,057,581k (± 0.01%) ~ 1,057,269k 1,058,001k p=0.514 n=12
Memory Allocs 13,572,364 (± 0.17%) 13,575,144 (± 0.21%) ~ 13,527,219 13,682,457 p=0.932 n=12
Config Time 0.017s (± 1.65%) 0.017s (± 1.65%) ~ 0.017s 0.018s p=1.000 n=12
Parse Time 0.355s (± 1.69%) 0.353s (± 1.48%) ~ 0.340s 0.368s p=0.639 n=12
Bind Time 0.079s (± 5.67%) 0.078s (± 8.40%) ~ 0.069s 0.108s p=0.415 n=12
Check Time 3.310s (± 0.55%) 3.291s (± 0.56%) ~ 3.218s 3.324s p=0.103 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 3.784s (± 0.38%) 3.761s (± 0.32%) -0.023s (- 0.60%) 3.734s 3.798s p=0.015 n=12
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,184,976 1,184,976 ~ ~ ~ p=1.000 n=12
Types 438,967 438,967 ~ ~ ~ p=1.000 n=12
Memory Used 1,281,690k (± 0.77%) 1,271,199k (± 0.35%) ~ 1,258,503k 1,286,606k p=0.089 n=12
Memory Allocs 77,391,918 (± 0.10%) 77,410,275 (± 0.10%) ~ 77,094,617 77,574,716 p=0.887 n=12
Config Time 0.004s (±12.60%) 0.004s (± 7.33%) ~ 0.004s 0.005s p=0.562 n=12
Parse Time 0.305s (± 2.07%) 0.308s (± 2.22%) ~ 0.289s 0.332s p=0.354 n=12
Bind Time 0.000s (±217.90%) 0.000s ~ ~ ~ p=1.000 n=12
Check Time 1.951s (± 0.51%) 1.950s (± 0.49%) ~ 1.931s 1.975s p=0.580 n=12
Emit Time 0.382s (± 4.33%) 0.367s (± 4.14%) ~ 0.326s 0.392s p=0.385 n=12
Total Time 23.526s (± 0.63%) 23.484s (± 0.86%) ~ 22.760s 23.845s p=0.887 n=12
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 263,513 263,513 ~ ~ ~ p=1.000 n=12
Types 196,118 196,118 ~ ~ ~ p=1.000 n=12
Memory Used 236,006k (± 0.04%) 236,072k (± 0.02%) ~ 235,936k 236,224k p=0.147 n=12
Memory Allocs 4,286,993 (± 0.01%) 4,287,324 (± 0.01%) ~ 4,285,893 4,288,589 p=0.266 n=12
Config Time 0.000s (±146.91%) 0.000s (±77.74%) ~ 0.000s 0.001s p=0.371 n=12
Parse Time 0.093s (± 4.81%) 0.090s (± 4.25%) ~ 0.082s 0.100s p=0.353 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 0.788s (± 0.70%) 0.785s (± 0.52%) ~ 0.777s 0.799s p=0.258 n=12
Emit Time 0.118s (± 5.08%) 0.119s (± 4.29%) ~ 0.106s 0.131s p=0.809 n=12
Total Time 1.044s (± 0.46%) 1.038s (± 0.86%) ~ 1.013s 1.058s p=0.202 n=12
t3code-server - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 4,350,705 4,350,705 ~ ~ ~ p=1.000 n=12
Types 3,040,691 3,040,691 ~ ~ ~ p=1.000 n=12
Memory Used 2,610,812k (± 0.02%) 2,610,771k (± 0.03%) ~ 2,609,346k 2,614,828k p=0.347 n=12
Memory Allocs 37,341,072 (± 0.07%) 37,335,859 (± 0.05%) ~ 37,274,645 37,385,380 p=0.671 n=12
Config Time 0.005s 0.005s ~ ~ ~ p=1.000 n=12
Parse Time 0.450s (± 2.22%) 0.449s (± 2.43%) ~ 0.420s 0.476s p=0.966 n=12
Bind Time 0.143s (±16.63%) 0.141s (±12.44%) ~ 0.115s 0.188s p=0.921 n=12
Check Time 13.661s (± 0.15%) 13.657s (± 0.36%) ~ 13.574s 13.828s p=0.486 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 14.272s (± 0.09%) 14.270s (± 0.32%) ~ 14.191s 14.432s p=0.744 n=12
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=12
Symbols 231,617 231,617 ~ ~ ~ p=1.000 n=12
Types 181,196 181,196 ~ ~ ~ p=1.000 n=12
Memory Used 203,527k (± 0.02%) 203,515k (± 0.02%) ~ 203,390k 203,572k p=0.600 n=12
Memory Allocs 1,358,561 (± 0.02%) 1,358,292 (± 0.02%) ~ 1,357,726 1,358,832 p=0.060 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.079s (± 3.27%) 0.079s (± 3.79%) ~ 0.071s 0.086s p=0.920 n=12
Bind Time 0.035s (± 9.61%) 0.031s (±10.30%) ~ 0.024s 0.039s p=0.138 n=12
Check Time 0.604s (± 0.86%) 0.605s (± 1.04%) ~ 0.592s 0.624s p=0.745 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 0.730s (± 0.55%) 0.730s (± 0.61%) ~ 0.718s 0.744s p=0.701 n=12
vscode - native
Errors 10 10 ~ ~ ~ p=1.000 n=12
Symbols 7,175,632 7,175,632 ~ ~ ~ p=1.000 n=12
Types 4,223,910 4,223,910 ~ ~ ~ p=1.000 n=12
Memory Used 5,354,720k (± 0.02%) 5,354,738k (± 0.01%) ~ 5,352,733k 5,356,467k p=0.932 n=12
Memory Allocs 61,910,140 (± 0.01%) 61,905,880 (± 0.01%) ~ 61,900,158 61,918,701 p=0.671 n=12
Config Time 0.078s (± 0.54%) 0.078s (± 0.31%) ~ 0.078s 0.079s p=1.000 n=12
Parse Time 1.956s (± 2.48%) 1.953s (± 2.19%) ~ 1.833s 2.054s p=0.854 n=12
Bind Time 0.700s (±15.21%) 0.677s (±13.84%) ~ 0.547s 1.001s p=0.682 n=12
Check Time 16.999s (± 0.65%) 17.023s (± 0.65%) ~ 16.791s 17.373s p=0.682 n=12
Emit Time 5.611s (± 8.83%) 5.630s (± 8.15%) ~ 5.034s 6.704s p=0.767 n=12
Total Time 25.428s (± 1.83%) 25.445s (± 1.70%) ~ 24.810s 26.436s p=0.899 n=12
webpack - native
Errors 602 602 ~ ~ ~ p=1.000 n=12
Symbols 910,191 910,191 ~ ~ ~ p=1.000 n=12
Types 629,514 629,514 ~ ~ ~ p=1.000 n=12
Memory Used 744,885k (± 0.02%) 745,056k (± 0.02%) ~ 744,784k 745,366k p=0.053 n=12
Memory Allocs 6,443,655 (± 0.02%) 6,442,019 (± 0.02%) -1,636 (- 0.03%) 6,439,922 6,448,318 p=0.039 n=12
Config Time 0.009s 0.009s ~ ~ ~ p=1.000 n=12
Parse Time 0.317s (± 2.60%) 0.322s (± 2.42%) ~ 0.298s 0.343s p=0.354 n=12
Bind Time 0.087s (±14.50%) 0.085s (±15.67%) ~ 0.069s 0.140s p=0.485 n=12
Check Time 2.664s (± 0.47%) 2.657s (± 0.60%) ~ 2.601s 2.687s p=0.640 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 3.114s (± 0.31%) 3.111s (± 0.41%) ~ 3.067s 3.140s p=0.702 n=12
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 640,494 640,494 ~ ~ ~ p=1.000 n=12
Types 387,992 387,992 ~ ~ ~ p=1.000 n=12
Memory Used 398,488k (± 0.02%) 398,540k (± 0.02%) ~ 398,325k 398,773k p=0.312 n=12
Memory Allocs 3,992,811 (± 0.07%) 3,993,073 (± 0.05%) ~ 3,988,632 3,997,246 p=0.932 n=12
Config Time 0.003s 0.003s ~ ~ ~ p=1.000 n=12
Parse Time 0.135s (± 3.53%) 0.133s (± 2.66%) ~ 0.125s 0.143s p=0.599 n=12
Bind Time 0.044s (±13.12%) 0.044s (±14.86%) ~ 0.033s 0.064s p=0.921 n=12
Check Time 0.948s (± 0.57%) 0.948s (± 0.35%) ~ 0.936s 0.957s p=0.743 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 1.137s (± 0.83%) 1.136s (± 0.67%) ~ 1.116s 1.150s p=0.559 n=12
System info unknown
Hosts
  • native
Scenarios
  • Compiler-Unions - native
  • angular-1 - native
  • arktype - native
  • mui-docs - native
  • sentry - native
  • social-app - native
  • strada-build-src - native
  • strada-compiler - native
  • t3code-server - native
  • ts-pre-modules - native
  • vscode - native
  • webpack - native
  • xstate-main - native
Benchmark Name Iterations
Current pr 12
Baseline baseline 12

lsp

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
CompilerLSP - native
Req 1 - updateOpen 10ms (± 8.72%) 11ms (±10.16%) ~ 10ms 15ms p=0.590 n=12
Req 2 - geterr 283ms (± 0.48%) 281ms (± 0.57%) ~ 279ms 286ms p=0.093 n=12
Req 3 - references 49ms (± 2.11%) 48ms (± 1.97%) ~ 46ms 52ms p=0.354 n=12
Req 4 - navto 18ms (± 7.51%) 18ms (± 6.14%) ~ 17ms 23ms p=0.604 n=12
Req 5 - completionInfo count 1,525 1,525 ~ ~ ~ p=1.000 n=12
Req 5 - completionInfo 19ms (±10.92%) 21ms (± 8.81%) 🔻+3ms (+13.72%) 15ms 26ms p=0.043 n=12
Compiler-UnionsLSP - native
Req 1 - updateOpen 10ms (± 7.84%) 10ms (±12.61%) ~ 9ms 16ms p=0.243 n=12
Req 2 - geterr 550ms (± 0.34%) 551ms (± 0.35%) ~ 546ms 558ms p=0.305 n=12
Req 3 - references 44ms (± 5.20%) 46ms (± 4.37%) ~ 41ms 49ms p=0.196 n=12
Req 4 - navto 17ms (± 1.95%) 16ms (± 1.75%) ~ 16ms 17ms p=0.214 n=12
Req 5 - completionInfo count 1,363 1,363 ~ ~ ~ p=1.000 n=12
Req 5 - completionInfo 16ms (± 6.21%) 16ms (± 9.19%) ~ 13ms 20ms p=0.311 n=12
xstate-main-1-LSP - native
⚠️ Failed failed failed
System info unknown
Hosts
  • native
Scenarios
  • CompilerLSP - native
  • Compiler-UnionsLSP - native
  • xstate-main-1-LSP - native
Benchmark Name Iterations
Current pr 12
Baseline baseline 12

startup

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
lsp-startup - native
⚠️ Failed failed failed
tsgo-startup - native
⚠️ Failed failed failed
System info unknown
Hosts
  • native
Scenarios
  • lsp-startup - native
  • tsgo-startup - native
Benchmark Name Iterations
Current pr 12
Baseline baseline 12

Developer Information:

Download Benchmarks

@github-project-automation github-project-automation Bot moved this from Not started to Needs merge in PR Backlog Oct 27, 2026
@jakebailey
Jake Bailey (jakebailey) added this pull request to the merge queue Oct 27, 2026
Merged via the queue into microsoft:main with commit 615d415 Oct 28, 2026
29 checks passed
@jakebailey
Jake Bailey (jakebailey) deleted the perf/intersection-name-counts branch October 28, 2026 00:01
@github-project-automation github-project-automation Bot moved this from Needs merge to Done in PR Backlog Oct 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Author: Team Domain: Performance Reports of unusually slow behavior For Uncommitted Bug PR for untriaged, rejected, closed or missing bug

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants