Skip to content

Don't resolve mapped type members to find their signatures - #64873

Merged
Jake Bailey (jakebailey) merged 2 commits into
microsoft:mainfrom
jakebailey:perf/mapped-type-signatures
Oct 24, 2026
Merged

Jake Bailey (jakebailey) merged 2 commits into
microsoft:mainfrom
jakebailey:perf/mapped-type-signatures

Conversation

@jakebailey

Copy link
Copy Markdown
Member

Mapped types never have call or construct signatures, but asking for their signatures resolved all of their properties. Signature checks in relations ask for them first, so every mapped type that reached a relation had its properties built, even when nothing else needed them. In MUI, components accept Partial<...> of each intrinsic element's props, so this built hundreds of properties for each of thousands of such types, and their combined base properties too.

Measured with --checkers 4 (n=6):

                      │  old.txt   │             new.txt              │
                      │   sec/op   │   sec/op    vs base              │
    Tsc/bluesky         2.459 ± 3%   2.458 ± 3%       ~ (p=0.818 n=6)
    Tsc/sentry          10.21 ± 4%   10.27 ± 3%       ~ (p=0.937 n=6)
    Tsc/t3code-server   8.097 ± 3%   8.085 ± 1%       ~ (p=0.937 n=6)
    Tsc/mui-docs        6.423 ± 4%   5.902 ± 4%  -8.10% (p=0.002 n=6)
    geomean             6.011        5.892       -1.98%

                      │   old.txt    │              new.txt               │
                      │    rss-B     │    rss-B      vs base              │
    Tsc/bluesky         1.184Gi ± 1%   1.176Gi ± 3%       ~ (p=0.699 n=6)
    Tsc/sentry          3.415Gi ± 5%   3.273Gi ± 5%       ~ (p=0.240 n=6)
    Tsc/t3code-server   2.875Gi ± 6%   2.913Gi ± 8%       ~ (p=0.699 n=6)
    Tsc/mui-docs        2.323Gi ± 7%   2.203Gi ± 5%       ~ (p=0.240 n=6)
    geomean             2.280Gi        2.229Gi       -2.21%

                      │   old.txt    │              new.txt               │
                      │    heap-B    │    heap-B     vs base              │
    Tsc/bluesky         915.1Mi ± 0%   914.7Mi ± 0%       ~ (p=0.132 n=6)
    Tsc/sentry          2.483Gi ± 0%   2.481Gi ± 0%       ~ (p=0.065 n=6)
    Tsc/t3code-server   2.179Gi ± 0%   2.179Gi ± 0%       ~ (p=0.589 n=6)
    Tsc/mui-docs        1.722Gi ± 0%   1.634Gi ± 0%  -5.16% (p=0.002 n=6)
    geomean             1.699Gi        1.676Gi       -1.35%

vscode is unaffected (n=12):

               │    old     │             new              │
               │   sec/op   │   sec/op    vs base          │
    Tsc/vscode   11.71 ± 1%   11.67 ± 2%  ~ (p=0.899 n=12)

               │     old      │              new               │
               │    rss-B     │    rss-B      vs base          │
    Tsc/vscode   4.765Gi ± 1%   4.787Gi ± 1%  ~ (p=0.443 n=12)

               │     old      │              new               │
               │    heap-B    │    heap-B     vs base          │
    Tsc/vscode   3.977Gi ± 0%   3.976Gi ± 0%  ~ (p=1.000 n=12)

Copilot AI balanced review requested due to automatic review settings October 19, 2026 17:47
@github-project-automation github-project-automation Bot moved this to Not started in PR Backlog Oct 19, 2026
@typescript-automation typescript-automation Bot added the For Uncommitted Bug PR for untriaged, rejected, closed or missing bug label 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

The narrow guard preserves signature results and deferred property resolution, with only a nonblocking regression-test suggestion.

1 open issue
What changed in this PR

Avoids resolving mapped-type properties when the native TypeScript checker only needs call or construct signatures.

Changes:

  • Returns empty signatures for unresolved mapped types.
  • Adds a guard matching the existing member-resolution dispatch.
File Description
tsc/​internal/​checker/​checker.go Skips unnecessary mapped-type member resolution during signature queries.

Review effort: Balanced

Comment thread tsc/internal/checker/checker.go Outdated

func (c *Checker) getSignaturesOfStructuredType(t *Type, kind SignatureKind) []*Signature {
if t.flags&TypeFlagsStructuredType == 0 {
if t.flags&TypeFlagsStructuredType == 0 || isUnresolvedMappedType(t) {
@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,562k (± 0.08%) 113,574k (± 0.05%) ~ 113,440k 113,703k p=0.977 n=12
Memory Allocs 2,212,567 (± 0.01%) 2,212,564 (± 0.00%) ~ 2,212,316 2,212,832 p=0.977 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.048s (± 3.57%) 0.049s (± 3.68%) ~ 0.044s 0.054s p=0.764 n=12
Bind Time 0.017s (± 6.81%) 0.017s (±10.09%) ~ 0.014s 0.021s p=0.902 n=12
Check Time 0.567s (± 0.79%) 0.559s (± 0.76%) -0.009s (- 1.57%) 0.549s 0.567s p=0.006 n=12
Emit Time 0.324s (± 2.76%) 0.324s (± 2.10%) ~ 0.301s 0.338s p=0.898 n=12
Total Time 0.965s (± 0.83%) 0.957s (± 0.61%) -0.008s (- 0.86%) 0.940s 0.969s p=0.049 n=12
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=12
Symbols 846,722 (± 0.10%) 846,666 (± 0.07%) ~ 845,352 848,581 p=0.843 n=12
Types 247,034 (± 0.00%) 247,000 (± 0.00%) -33 (- 0.01%) 246,999 247,001 p=0.000 n=12
Memory Used 596,272k (± 0.02%) 596,333k (± 0.02%) ~ 595,963k 596,596k p=0.443 n=12
Memory Allocs 13,140,143 (± 0.03%) 13,138,645 (± 0.02%) ~ 13,134,693 13,146,627 p=0.514 n=12
Config Time 0.020s (± 0.90%) 0.020s ~ ~ ~ p=1.000 n=12
Parse Time 0.276s (± 2.41%) 0.276s (± 2.02%) ~ 0.264s 0.290s p=0.876 n=12
Bind Time 0.111s (±12.88%) 0.108s (±12.64%) ~ 0.074s 0.138s p=0.701 n=12
Check Time 0s 0s ~ ~ ~ p=1.000 n=12
Emit Time 1.851s (± 1.34%) 1.851s (± 1.70%) ~ 1.758s 1.941s p=0.876 n=12
Total Time 2.278s (± 1.08%) 2.278s (± 1.37%) ~ 2.165s 2.358s p=0.876 n=12
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=12
Symbols 4,331,983 4,248,807 -83,176 (- 1.92%) ~ ~ p=0.000 n=12
Types 1,370,520 1,356,171 -14,349 (- 1.05%) ~ ~ p=0.000 n=12
Memory Used 2,625,111k (± 0.07%) 2,504,476k (± 0.05%) 🟩-120,635k (- 4.60%) 2,500,350k 2,508,434k p=0.000 n=12
Memory Allocs 27,712,290 (± 0.16%) 27,001,515 (± 0.06%) -710,775 (- 2.56%) 26,965,584 27,048,722 p=0.000 n=12
Config Time 0.020s (± 1.21%) 0.020s (± 1.40%) ~ 0.020s 0.021s p=1.000 n=12
Parse Time 0.572s (± 4.17%) 0.578s (± 1.98%) ~ 0.543s 0.604s p=0.989 n=12
Bind Time 0.003s (±12.54%) 0.002s (±13.14%) ~ 0.002s 0.003s p=1.000 n=12
Check Time 8.612s (± 0.36%) 7.751s (± 0.48%) 🟩-0.861s (-10.00%) 7.702s 7.900s p=0.000 n=12
Emit Time 0.701s (±11.12%) 0.560s (± 3.27%) 🟩-0.141s (-20.12%) 0.497s 0.576s p=0.011 n=12
Total Time 10.822s (± 0.77%) 9.826s (± 0.13%) 🟩-0.997s (- 9.21%) 9.795s 9.856s p=0.000 n=12
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,388,680 1,388,668 -12 (- 0.00%) ~ ~ p=0.000 n=12
Types 441,862 441,862 ~ ~ ~ p=1.000 n=12
Memory Used 1,309,498k (± 0.49%) 1,313,069k (± 0.64%) ~ 1,298,825k 1,341,227k p=0.551 n=12
Memory Allocs 78,228,753 (± 0.09%) 78,258,865 (± 0.10%) ~ 77,949,564 78,427,082 p=0.378 n=12
Config Time 0.003s (±12.29%) 0.004s (±10.43%) ~ 0.003s 0.005s p=0.215 n=12
Parse Time 0.249s (± 1.77%) 0.253s (± 1.95%) ~ 0.237s 0.263s p=0.224 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 1.674s (± 0.41%) 1.667s (± 0.39%) ~ 1.649s 1.686s p=0.086 n=12
Emit Time 0.297s (± 4.76%) 0.304s (± 2.92%) ~ 0.281s 0.332s p=0.542 n=12
Total Time 19.723s (± 0.88%) 19.841s (± 0.64%) ~ 19.532s 20.244s p=0.178 n=12
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 334,953 334,941 -12 (- 0.00%) ~ ~ p=0.000 n=12
Types 197,616 197,616 ~ ~ ~ p=1.000 n=12
Memory Used 247,462k (± 0.02%) 247,520k (± 0.02%) ~ 247,336k 247,608k p=0.091 n=12
Memory Allocs 4,329,204 (± 0.01%) 4,329,462 (± 0.01%) ~ 4,328,060 4,330,519 p=0.410 n=12
Config Time 0.000s (±113.79%) 0.001s (±55.53%) ~ 0.000s 0.001s p=0.214 n=12
Parse Time 0.094s (± 4.07%) 0.091s (± 5.51%) ~ 0.078s 0.104s p=0.541 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 0.801s (± 0.65%) 0.798s (± 0.66%) ~ 0.787s 0.815s p=0.417 n=12
Emit Time 0.122s (± 6.16%) 0.120s (± 5.83%) ~ 0.102s 0.133s p=0.788 n=12
Total Time 1.062s (± 0.60%) 1.055s (± 0.97%) ~ 1.023s 1.082s p=0.297 n=12
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=12
Symbols 303,834 303,815 -19 (- 0.01%) ~ ~ p=0.000 n=12
Types 181,663 181,663 ~ ~ ~ p=1.000 n=12
Memory Used 215,259k (± 0.02%) 215,228k (± 0.01%) ~ 215,089k 215,274k p=0.259 n=12
Memory Allocs 1,401,682 (± 0.01%) 1,401,627 (± 0.02%) ~ 1,400,828 1,402,141 p=0.887 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.080s (± 3.93%) 0.077s (± 4.93%) ~ 0.068s 0.085s p=0.297 n=12
Bind Time 0.030s (± 9.76%) 0.034s (±11.39%) ~ 0.024s 0.044s p=0.091 n=12
Check Time 0.625s (± 1.01%) 0.619s (± 1.11%) ~ 0.603s 0.644s p=0.173 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 0.749s (± 0.75%) 0.743s (± 0.86%) -0.006s (- 0.80%) 0.734s 0.772s p=0.029 n=12
vscode - native
Errors 396 396 ~ ~ ~ p=1.000 n=12
Symbols 12,485,544 12,485,523 -21 (- 0.00%) ~ ~ p=0.000 n=12
Types 4,087,014 4,086,995 -19 (- 0.00%) ~ ~ p=0.000 n=12
Memory Used 5,846,309k (± 0.03%) 5,846,108k (± 0.02%) ~ 5,843,481k 5,848,894k p=0.843 n=12
Memory Allocs 59,404,397 (± 0.02%) 59,387,756 (± 0.01%) -16,642 (- 0.03%) 59,378,508 59,397,926 p=0.028 n=12
Config Time 0.076s (± 0.37%) 0.076s (± 0.32%) ~ 0.076s 0.077s p=1.000 n=12
Parse Time 1.852s (± 2.32%) 1.837s (± 2.49%) ~ 1.765s 2.000s p=0.514 n=12
Bind Time 0.632s (±12.07%) 0.692s (±14.08%) ~ 0.514s 0.956s p=0.478 n=12
Check Time 15.910s (± 1.24%) 15.768s (± 1.23%) ~ 15.452s 16.198s p=0.068 n=12
Emit Time 5.775s (± 6.24%) 5.661s (± 6.38%) ~ 4.752s 6.541s p=0.755 n=12
Total Time 24.336s (± 1.10%) 24.126s (± 1.09%) ~ 23.321s 24.793s p=0.242 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,882 -18 (- 0.00%) ~ ~ p=0.000 n=12
Memory Used 885,696k (± 0.02%) 885,701k (± 0.02%) ~ 885,293k 886,303k p=0.887 n=12
Memory Allocs 6,927,301 (± 0.02%) 6,926,881 (± 0.01%) ~ 6,924,812 6,928,620 p=0.755 n=12
Config Time 0.007s (± 4.37%) 0.008s (± 4.38%) ~ 0.007s 0.008s p=1.000 n=12
Parse Time 0.246s (± 2.57%) 0.253s (± 3.01%) ~ 0.226s 0.270s p=0.075 n=12
Bind Time 0.060s (± 7.26%) 0.065s (±13.16%) ~ 0.056s 0.098s p=0.101 n=12
Check Time 2.472s (± 0.41%) 2.428s (± 0.20%) -0.044s (- 1.77%) 2.414s 2.442s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 2.817s (± 0.43%) 2.783s (± 0.31%) -0.034s (- 1.20%) 2.761s 2.803s p=0.000 n=12
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,060,810 1,060,743 -67 (- 0.01%) ~ ~ p=0.000 n=12
Types 389,671 389,443 -228 (- 0.06%) ~ ~ p=0.000 n=12
Memory Used 471,851k (± 0.03%) 471,700k (± 0.02%) ~ 471,559k 471,971k p=0.062 n=12
Memory Allocs 4,218,918 (± 0.07%) 4,218,038 (± 0.09%) ~ 4,209,110 4,228,892 p=0.755 n=12
Config Time 0.003s (± 8.64%) 0.003s (± 8.64%) ~ 0.002s 0.003s p=1.000 n=12
Parse Time 0.133s (± 3.07%) 0.133s (± 3.01%) ~ 0.126s 0.142s p=0.989 n=12
Bind Time 0.047s (±14.30%) 0.051s (±14.60%) ~ 0.034s 0.069s p=0.449 n=12
Check Time 1.090s (± 0.77%) 1.087s (± 0.65%) ~ 1.070s 1.110s p=0.680 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 1.280s (± 0.72%) 1.282s (± 0.61%) ~ 1.253s 1.304s p=0.702 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

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Mapped types and reverse mapped types never have signatures, so a simple check of objectFlags for those two kinds is all we need.

Comment thread tsc/internal/checker/checker.go Outdated
Comment thread tsc/internal/checker/checker.go Outdated
Mapped types never have call or construct signatures, but asking for
their signatures resolved all of their properties. Signature checks
in relations ask for them first, so every mapped type that reached a
relation had its properties built, even when nothing else needed
them. In MUI, components accept Partial<...> of each intrinsic
element's props, so this built hundreds of properties for each of
thousands of such types, and their combined base properties too.

Measured with --checkers 4 (n=6):

                      │  old.txt   │             new.txt              │
                      │   sec/op   │   sec/op    vs base              │
    Tsc/bluesky         2.459 ± 3%   2.458 ± 3%       ~ (p=0.818 n=6)
    Tsc/sentry          10.21 ± 4%   10.27 ± 3%       ~ (p=0.937 n=6)
    Tsc/t3code-server   8.097 ± 3%   8.085 ± 1%       ~ (p=0.937 n=6)
    Tsc/mui-docs        6.423 ± 4%   5.902 ± 4%  -8.10% (p=0.002 n=6)
    geomean             6.011        5.892       -1.98%

                      │   old.txt    │              new.txt               │
                      │    rss-B     │    rss-B      vs base              │
    Tsc/bluesky         1.184Gi ± 1%   1.176Gi ± 3%       ~ (p=0.699 n=6)
    Tsc/sentry          3.415Gi ± 5%   3.273Gi ± 5%       ~ (p=0.240 n=6)
    Tsc/t3code-server   2.875Gi ± 6%   2.913Gi ± 8%       ~ (p=0.699 n=6)
    Tsc/mui-docs        2.323Gi ± 7%   2.203Gi ± 5%       ~ (p=0.240 n=6)
    geomean             2.280Gi        2.229Gi       -2.21%

                      │   old.txt    │              new.txt               │
                      │    heap-B    │    heap-B     vs base              │
    Tsc/bluesky         915.1Mi ± 0%   914.7Mi ± 0%       ~ (p=0.132 n=6)
    Tsc/sentry          2.483Gi ± 0%   2.481Gi ± 0%       ~ (p=0.065 n=6)
    Tsc/t3code-server   2.179Gi ± 0%   2.179Gi ± 0%       ~ (p=0.589 n=6)
    Tsc/mui-docs        1.722Gi ± 0%   1.634Gi ± 0%  -5.16% (p=0.002 n=6)
    geomean             1.699Gi        1.676Gi       -1.35%

vscode is unaffected (n=12):

               │    old     │             new              │
               │   sec/op   │   sec/op    vs base          │
    Tsc/vscode   11.71 ± 1%   11.67 ± 2%  ~ (p=0.899 n=12)

               │     old      │              new               │
               │    rss-B     │    rss-B      vs base          │
    Tsc/vscode   4.765Gi ± 1%   4.787Gi ± 1%  ~ (p=0.443 n=12)

               │     old      │              new               │
               │    heap-B    │    heap-B     vs base          │
    Tsc/vscode   3.977Gi ± 0%   3.976Gi ± 0%  ~ (p=1.000 n=12)
Mapped and reverse mapped types never have call or construct
signatures, whether or not their members have been resolved, so the
flags alone are enough to answer the question.
@jakebailey

Copy link
Copy Markdown
Member Author

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

@typescript-automation

typescript-automation Bot commented Oct 23, 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

@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,258k (± 0.08%) 109,287k (± 0.08%) ~ 109,113k 109,512k p=0.478 n=12
Memory Allocs 2,196,632 (± 0.00%) 2,196,618 (± 0.01%) ~ 2,196,286 2,196,994 p=0.843 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.040s (± 3.55%) 0.039s (± 3.76%) ~ 0.036s 0.044s p=0.534 n=12
Bind Time 0.013s (±11.90%) 0.013s (± 8.11%) ~ 0.011s 0.016s p=0.787 n=12
Check Time 0.481s (± 0.90%) 0.477s (± 0.71%) ~ 0.470s 0.487s p=0.202 n=12
Emit Time 0.263s (± 1.78%) 0.272s (± 2.97%) +0.009s (+ 3.36%) 0.252s 0.299s p=0.050 n=12
Total Time 0.803s (± 0.67%) 0.808s (± 1.00%) ~ 0.792s 0.832s p=0.486 n=12
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=12
Symbols 586,569 (± 0.02%) 586,555 (± 0.01%) ~ 586,287 586,742 p=0.452 n=12
Types 241,723 (± 0.00%) 241,693 (± 0.00%) -31 (- 0.01%) 241,690 241,700 p=0.000 n=12
Memory Used 551,164k (± 0.02%) 551,207k (± 0.04%) ~ 550,739k 551,837k p=0.989 n=12
Memory Allocs 13,080,867 (± 0.10%) 13,070,345 (± 0.01%) ~ 13,067,326 13,073,912 p=0.089 n=12
Config Time 0.017s (± 1.99%) 0.017s (± 1.86%) ~ 0.016s 0.017s p=0.680 n=12
Parse Time 0.224s (± 2.12%) 0.223s (± 2.90%) ~ 0.213s 0.244s p=0.522 n=12
Bind Time 0.079s (±10.75%) 0.080s (±16.22%) ~ 0.060s 0.111s p=0.830 n=12
Check Time 0s 0s ~ ~ ~ p=1.000 n=12
Emit Time 1.487s (± 1.97%) 1.496s (± 1.47%) ~ 1.432s 1.538s p=0.713 n=12
Total Time 1.825s (± 2.00%) 1.831s (± 1.57%) ~ 1.752s 1.877s p=0.832 n=12
arktype - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 685,943 685,943 ~ ~ ~ p=1.000 n=12
Types 939,496 939,490 -6 (- 0.00%) ~ ~ p=0.000 n=12
Memory Used 533,266k (± 0.02%) 533,154k (± 0.02%) -112k (- 0.02%) 533,027k 533,513k p=0.023 n=12
Memory Allocs 12,771,696 (± 0.02%) 12,768,830 (± 0.00%) -2,866 (- 0.02%) 12,767,654 12,769,647 p=0.006 n=12
Config Time 0.002s 0.002s ~ ~ ~ p=1.000 n=12
Parse Time 0.071s (± 3.43%) 0.070s (± 3.52%) ~ 0.065s 0.079s p=0.597 n=12
Bind Time 0.021s (±11.98%) 0.019s (± 2.36%) ~ 0.018s 0.020s p=0.264 n=12
Check Time 1.823s (± 0.82%) 1.838s (± 0.65%) ~ 1.797s 1.878s p=0.297 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 1.973s (± 0.29%) 1.975s (± 0.54%) ~ 1.955s 2.007s p=0.854 n=12
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=12
Symbols 3,855,253 3,784,027 -71,226 (- 1.85%) ~ ~ p=0.000 n=12
Types 1,370,331 1,355,982 -14,349 (- 1.05%) ~ ~ p=0.000 n=12
Memory Used 2,308,314k (± 0.06%) 2,200,531k (± 0.08%) 🟩-107,783k (- 4.67%) 2,197,308k 2,205,751k p=0.000 n=12
Memory Allocs 27,151,571 (± 0.05%) 26,475,280 (± 0.09%) -676,292 (- 2.49%) 26,413,229 26,544,374 p=0.000 n=12
Config Time 0.017s (± 1.86%) 0.017s (± 1.86%) ~ 0.016s 0.017s p=1.000 n=12
Parse Time 0.474s (± 2.29%) 0.465s (± 1.70%) ~ 0.445s 0.482s p=0.139 n=12
Bind Time 0.002s 0.002s ~ ~ ~ p=1.000 n=12
Check Time 6.602s (± 0.60%) 5.943s (± 0.30%) 🟩-0.659s (- 9.98%) 5.914s 6.010s p=0.000 n=12
Emit Time 0.453s (± 2.97%) 0.462s (± 1.47%) +0.009s (+ 2.08%) 0.428s 0.467s p=0.046 n=12
Total Time 8.283s (± 0.14%) 7.651s (± 0.25%) 🟩-0.632s (- 7.63%) 7.617s 7.724s p=0.000 n=12
sentry - native
Errors 2 2 ~ ~ ~ p=1.000 n=12
Symbols 4,793,345 4,793,249 -96 (- 0.00%) ~ ~ p=0.000 n=12
Types 2,607,067 2,607,051 -16 (- 0.00%) ~ ~ p=0.000 n=12
Memory Used 3,206,779k (± 0.03%) 3,206,958k (± 0.04%) ~ 3,204,718k 3,211,201k p=0.977 n=12
Memory Allocs 75,270,940 (± 0.07%) 75,267,996 (± 0.07%) ~ 75,145,708 75,415,643 p=0.977 n=12
Config Time 0.060s (± 0.51%) 0.061s (± 0.68%) ~ 0.060s 0.062s p=0.299 n=12
Parse Time 1.015s (± 2.28%) 1.012s (± 2.65%) ~ 0.960s 1.106s p=0.660 n=12
Bind Time 0.310s (±11.33%) 0.337s (±11.89%) ~ 0.263s 0.448s p=0.259 n=12
Check Time 13.757s (± 0.76%) 13.737s (± 0.61%) ~ 13.588s 13.949s p=0.977 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 15.217s (± 0.73%) 15.228s (± 0.61%) ~ 15.052s 15.504s p=1.000 n=12
social-app - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,883,343 1,883,075 -268 (- 0.01%) ~ ~ p=0.000 n=12
Types 1,158,474 1,158,171 -303 (- 0.03%) ~ ~ p=0.000 n=12
Memory Used 1,057,762k (± 0.01%) 1,057,481k (± 0.01%) -280k (- 0.03%) 1,057,173k 1,057,730k p=0.001 n=12
Memory Allocs 13,578,479 (± 0.16%) 13,573,133 (± 0.18%) ~ 13,526,976 13,633,070 p=0.799 n=12
Config Time 0.017s (± 1.65%) 0.017s (± 1.86%) ~ 0.017s 0.018s p=0.667 n=12
Parse Time 0.349s (± 2.70%) 0.357s (± 2.77%) ~ 0.333s 0.384s p=0.369 n=12
Bind Time 0.089s (±16.61%) 0.083s (±12.03%) ~ 0.071s 0.123s p=0.898 n=12
Check Time 3.287s (± 0.92%) 3.293s (± 0.82%) ~ 3.215s 3.335s p=0.989 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 3.767s (± 0.55%) 3.776s (± 0.57%) ~ 3.717s 3.820s p=0.452 n=12
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,184,988 1,184,976 -12 (- 0.00%) ~ ~ p=0.000 n=12
Types 438,967 438,967 ~ ~ ~ p=1.000 n=12
Memory Used 1,279,405k (± 0.47%) 1,282,328k (± 0.95%) ~ 1,263,497k 1,326,096k p=0.887 n=12
Memory Allocs 77,460,706 (± 0.08%) 77,409,078 (± 0.07%) ~ 77,230,801 77,512,296 p=0.128 n=12
Config Time 0.004s (±13.41%) 0.004s (±15.58%) ~ 0.002s 0.006s p=0.330 n=12
Parse Time 0.308s (± 2.56%) 0.315s (± 2.15%) ~ 0.293s 0.329s p=0.155 n=12
Bind Time 0.000s 0.001s (±217.90%) ~ 0.000s 0.012s p=1.000 n=12
Check Time 1.955s (± 0.56%) 1.953s (± 0.60%) ~ 1.932s 1.996s p=0.660 n=12
Emit Time 0.374s (± 4.16%) 0.384s (± 3.92%) ~ 0.344s 0.422s p=0.311 n=12
Total Time 23.558s (± 0.61%) 23.692s (± 0.73%) ~ 23.084s 24.122s p=0.347 n=12
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 263,525 263,513 -12 (- 0.00%) ~ ~ p=0.000 n=12
Types 196,118 196,118 ~ ~ ~ p=1.000 n=12
Memory Used 236,028k (± 0.03%) 236,032k (± 0.02%) ~ 235,936k 236,247k p=0.831 n=12
Memory Allocs 4,287,259 (± 0.01%) 4,287,487 (± 0.01%) ~ 4,286,643 4,288,366 p=0.410 n=12
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=12
Parse Time 0.110s (± 5.00%) 0.113s (± 4.17%) ~ 0.102s 0.127s p=0.369 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 0.946s (± 0.63%) 0.945s (± 0.51%) ~ 0.931s 0.953s p=0.765 n=12
Emit Time 0.150s (± 4.58%) 0.142s (± 5.73%) ~ 0.120s 0.163s p=0.182 n=12
Total Time 1.266s (± 0.87%) 1.254s (± 0.97%) ~ 1.227s 1.290s p=0.124 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,741k (± 0.04%) 2,609,939k (± 0.02%) ~ 2,608,594k 2,611,482k p=0.213 n=12
Memory Allocs 37,339,056 (± 0.07%) 37,313,076 (± 0.05%) ~ 37,284,650 37,377,882 p=0.060 n=12
Config Time 0.006s 0.006s ~ ~ ~ p=1.000 n=12
Parse Time 0.574s (± 1.90%) 0.569s (± 2.94%) ~ 0.525s 0.602s p=0.809 n=12
Bind Time 0.177s (±15.71%) 0.177s (±15.81%) ~ 0.148s 0.268s p=0.967 n=12
Check Time 16.356s (± 0.30%) 16.354s (± 0.38%) ~ 16.175s 16.544s p=0.887 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 17.130s (± 0.29%) 17.121s (± 0.32%) ~ 16.992s 17.317s p=0.799 n=12
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=12
Symbols 231,636 231,617 -19 (- 0.01%) ~ ~ p=0.000 n=12
Types 181,196 181,196 ~ ~ ~ p=1.000 n=12
Memory Used 203,524k (± 0.03%) 203,533k (± 0.02%) ~ 203,441k 203,617k p=0.966 n=12
Memory Allocs 1,358,470 (± 0.02%) 1,358,383 (± 0.02%) ~ 1,357,801 1,358,748 p=0.755 n=12
Config Time 0.000s 0.000s (±146.91%) ~ 0.000s 0.001s p=0.478 n=12
Parse Time 0.093s (± 4.19%) 0.095s (± 5.17%) ~ 0.085s 0.107s p=0.831 n=12
Bind Time 0.038s (± 7.47%) 0.042s (± 8.42%) ~ 0.034s 0.052s p=0.060 n=12
Check Time 0.730s (± 0.94%) 0.729s (± 1.15%) ~ 0.712s 0.753s p=0.876 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 0.876s (± 0.73%) 0.880s (± 0.97%) ~ 0.858s 0.900s p=0.369 n=12
vscode - native
Errors 10 10 ~ ~ ~ p=1.000 n=12
Symbols 7,199,066 7,198,534 -532 (- 0.01%) ~ ~ p=0.000 n=12
Types 4,249,364 4,249,341 -23 (- 0.00%) ~ ~ p=0.000 n=12
Memory Used 5,365,270k (± 0.02%) 5,365,029k (± 0.02%) ~ 5,363,508k 5,368,523k p=0.443 n=12
Memory Allocs 61,985,828 (± 0.01%) 61,984,601 (± 0.01%) ~ 61,974,552 62,002,049 p=0.551 n=12
Config Time 0.078s (± 0.41%) 0.078s (± 0.31%) ~ 0.078s 0.079s p=0.371 n=12
Parse Time 1.950s (± 2.79%) 1.956s (± 2.38%) ~ 1.857s 2.055s p=0.787 n=12
Bind Time 0.764s (±15.87%) 0.687s (±14.00%) ~ 0.539s 0.975s p=0.198 n=12
Check Time 15.948s (± 0.92%) 15.978s (± 1.00%) ~ 15.660s 16.271s p=0.943 n=12
Emit Time 6.074s (± 8.86%) 5.772s (± 7.53%) ~ 5.032s 6.829s p=0.713 n=12
Total Time 24.896s (± 1.85%) 24.554s (± 1.58%) ~ 23.929s 25.558s p=0.590 n=12
webpack - native
Errors 602 602 ~ ~ ~ p=1.000 n=12
Symbols 916,593 916,593 ~ ~ ~ p=1.000 n=12
Types 643,793 643,775 -18 (- 0.00%) ~ ~ p=0.000 n=12
Memory Used 765,265k (± 0.01%) 765,217k (± 0.02%) ~ 764,831k 765,684k p=0.755 n=12
Memory Allocs 6,540,491 (± 0.02%) 6,540,217 (± 0.01%) ~ 6,537,455 6,543,374 p=0.787 n=12
Config Time 0.007s (± 4.37%) 0.008s (± 3.67%) ~ 0.007s 0.008s p=0.214 n=12
Parse Time 0.263s (± 2.26%) 0.261s (± 3.20%) ~ 0.240s 0.289s p=0.486 n=12
Bind Time 0.066s (±15.98%) 0.068s (±13.86%) ~ 0.055s 0.107s p=0.484 n=12
Check Time 2.475s (± 0.30%) 2.486s (± 0.33%) ~ 2.469s 2.510s p=0.062 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 2.843s (± 0.38%) 2.854s (± 0.36%) ~ 2.835s 2.885s p=0.070 n=12
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 640,566 640,494 -72 (- 0.01%) ~ ~ p=0.000 n=12
Types 388,220 387,992 -228 (- 0.06%) ~ ~ p=0.000 n=12
Memory Used 398,587k (± 0.03%) 398,472k (± 0.02%) ~ 398,311k 398,770k p=0.075 n=12
Memory Allocs 3,992,949 (± 0.11%) 3,991,208 (± 0.12%) ~ 3,980,161 4,007,634 p=0.630 n=12
Config Time 0.002s 0.002s ~ ~ ~ p=1.000 n=12
Parse Time 0.104s (± 2.50%) 0.105s (± 3.64%) ~ 0.096s 0.115s p=0.744 n=12
Bind Time 0.038s (±18.67%) 0.036s (±17.02%) ~ 0.027s 0.051s p=0.619 n=12
Check Time 0.791s (± 0.44%) 0.794s (± 0.60%) ~ 0.783s 0.808s p=0.264 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 0.940s (± 0.94%) 0.943s (± 0.72%) ~ 0.925s 0.957s p=0.523 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

Developer Information:

Download Benchmarks

@github-project-automation github-project-automation Bot moved this from Not started to Needs merge in PR Backlog Oct 24, 2026
@jakebailey
Jake Bailey (jakebailey) added this pull request to the merge queue Oct 24, 2026
Merged via the queue into microsoft:main with commit 8a62bbe Oct 24, 2026
29 checks passed
@jakebailey
Jake Bailey (jakebailey) deleted the perf/mapped-type-signatures branch October 24, 2026 16:37
@github-project-automation github-project-automation Bot moved this from Needs merge to Done in PR Backlog Oct 24, 2026
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

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants