Skip to content

Speed up union construction with sorted-run merging and cheaper membership check - #65033

Open
Jake Bailey (jakebailey) wants to merge 5 commits into
microsoft:mainfrom
jakebailey:perf/union-construction
Open

Jake Bailey (jakebailey) wants to merge 5 commits into
microsoft:mainfrom
jakebailey:perf/union-construction

Conversation

@jakebailey

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

Copy link
Copy Markdown
Member

Thanks Steven (@teamchong) for finding these!

addTypesToUnion collected the constituents of every source type into
one list and then sorted the whole list with a stable sort. Most of
that work is redundant: the constituents of each source union are
already sorted by CompareTypes, and unions are very often built from
just a few such lists (for example, a union plus `undefined`, or two
unions). The full sort re-compares elements whose relative order is
already known, and CompareTypes is not cheap for many kinds of types.

Instead, note where each source type's sorted run begins out of order
with the previous run, and merge those runs pairwise. When the input
is already in order no sorting is done at all. Because CompareTypes is
a total order that only reports equality for identical types, the
merged result is exactly the list the stable sort produced.

Co-authored-by: Steven Chong <[email protected]>
containsType is called frequently on union constituent lists (during
relation checks, narrowing, and union reduction) and always did a
binary search, paying for several CompareTypes calls even when the
answer is obvious.

Since type lists are sorted primarily by their sort order flags, a
type whose flags fall outside the range spanned by the first and last
elements cannot be in the list, which can be decided with two cheap
flag reads. For short lists, a linear identity scan is also cheaper
than the comparisons a binary search requires.

Co-authored-by: Steven Chong <[email protected]>
When reducing a union, removeRedundantLiteralTypes drops a fresh
literal type if its regular counterpart is also present, and did so by
binary searching the whole type set for every fresh literal. Unions of
many fresh literals (common for inferred literal-heavy expressions)
therefore paid a full search per member.

A fresh literal type and its regular type have the same flags, symbol
and value, so CompareTypes only distinguishes them by type ID, and no
other type can sort between them. The regular type, if present, must
therefore be immediately before or after the fresh type in the sorted
set, which can be checked directly.

Co-authored-by: Steven Chong <[email protected]>
When a union contains both string literals and pattern template
literal types, every string literal is tested against every template
to see whether it is subsumed. Each test goes through template literal
inference, which allocates and does a fair amount of work before
discovering that most literals do not even begin and end with the
template's fixed leading and trailing text.

Check those fixed texts directly first. This is the same condition
inference rejects on, so only literals that could actually match pay
for the full check.

Co-authored-by: Steven Chong <[email protected]>
@typescript-automation typescript-automation Bot added Author: Team For Uncommitted Bug PR for untriaged, rejected, closed or missing bug labels Oct 29, 2026
@jakebailey Jake Bailey (jakebailey) added the Domain: Performance Reports of unusually slow behavior label Oct 29, 2026
@jakebailey

Copy link
Copy Markdown
Member Author

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

@typescript-automation

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

@jakebailey
Jake Bailey (jakebailey) marked this pull request as ready for review October 29, 2026 21:34
Copilot AI balanced review requested due to automatic review settings October 29, 2026 21:34

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.

🟡 Changes recommended

Reslicing the run-index buffer to zero retains arbitrarily large allocations for the checker’s lifetime, even when deduplication leaves only two union constituents.

1 open issue
What changed in this PR

This PR optimizes union construction and membership checks in the native TypeScript checker.

Changes:

  • Merge already-sorted constituent runs instead of sorting the entire union.
  • Use adjacent checks for fresh literal counterparts and cheaper membership checks for short lists.
  • Reject impossible string-literal/template matches before running full matching logic.
File Description
tsc/​internal/​checker/​checker.go Adds sorted-run merging, reusable run-index storage, and faster union membership and literal-reduction checks.

Review effort: Balanced

Comment thread tsc/internal/checker/checker.go Outdated
The run-start buffer is kept on the checker for reuse across union
constructions. Inputs with many short sorted runs, such as alternating
primitives, can grow it far beyond the size of the resulting union,
and that capacity would then be retained for the checker's lifetime.

Discard buffers above the same 4096-element cutoff used for temporary
type sets, while still reusing smaller ones.

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

There are no active review issues for the union-type construction optimizations.

No open issues 🎉

1 resolved since last review

Review effort: Balanced

@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=20
Symbols 88,466 88,466 ~ ~ ~ p=1.000 n=20
Types 79,607 79,607 ~ ~ ~ p=1.000 n=20
Memory Used 104,127k (± 0.02%) 104,141k (± 0.02%) ~ 104,060k 104,216k p=0.499 n=20
Memory Allocs 1,263,774 (± 0.01%) 1,263,828 (± 0.01%) ~ 1,263,405 1,264,053 p=0.268 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.023s (± 3.66%) 0.022s (± 3.20%) ~ 0.020s 0.025s p=0.153 n=20
Bind Time 0.009s (± 5.60%) 0.009s (±11.40%) ~ 0.007s 0.016s p=0.817 n=20
Check Time 0.215s (± 0.52%) 0.212s (± 0.62%) -0.003s (- 1.37%) 0.208s 0.218s p=0.001 n=20
Emit Time 0.139s (± 0.87%) 0.139s (± 1.01%) ~ 0.132s 0.144s p=0.741 n=20
Total Time 0.389s (± 0.35%) 0.385s (± 0.69%) -0.004s (- 0.98%) 0.376s 0.400s p=0.008 n=20
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=20
Symbols 586,519 (± 0.01%) 586,512 (± 0.02%) ~ 586,172 586,819 p=0.683 n=20
Types 241,688 (± 0.00%) 241,688 (± 0.00%) ~ 241,685 241,698 p=0.718 n=20
Memory Used 517,904k (± 0.02%) 518,011k (± 0.02%) ~ 517,715k 518,396k p=0.071 n=20
Memory Allocs 7,798,961 (± 0.14%) 7,809,581 (± 0.23%) ~ 7,785,500 7,940,222 p=0.355 n=20
Config Time 0.008s (± 3.21%) 0.008s (± 3.34%) ~ 0.008s 0.010s p=0.459 n=20
Parse Time 0.127s (± 2.31%) 0.128s (± 2.69%) ~ 0.115s 0.146s p=0.722 n=20
Bind Time 0.047s (±12.31%) 0.044s (± 8.64%) ~ 0.037s 0.064s p=0.875 n=20
Check Time 0s 0s ~ ~ ~ p=1.000 n=20
Emit Time 0.879s (± 2.01%) 0.874s (± 1.60%) ~ 0.837s 0.974s p=0.899 n=20
Total Time 1.071s (± 2.01%) 1.067s (± 1.51%) ~ 1.022s 1.171s p=0.941 n=20
arktype - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 685,920 685,920 ~ ~ ~ p=1.000 n=20
Types 939,467 939,467 ~ ~ ~ p=1.000 n=20
Memory Used 497,279k (± 0.01%) 497,359k (± 0.01%) +80k (+ 0.02%) 497,168k 497,571k p=0.027 n=20
Memory Allocs 12,108,478 (± 0.01%) 12,110,886 (± 0.02%) +2,409 (+ 0.02%) 12,104,975 12,119,448 p=0.049 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.042s (± 2.91%) 0.042s (± 3.77%) ~ 0.038s 0.049s p=0.898 n=20
Bind Time 0.014s (±10.86%) 0.014s (±10.15%) ~ 0.011s 0.019s p=0.701 n=20
Check Time 0.958s (± 0.44%) 0.962s (± 0.55%) ~ 0.943s 0.978s p=0.433 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.044s (± 0.33%) 1.048s (± 0.39%) ~ 1.034s 1.063s p=0.193 n=20
class-transformer - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 45,376 45,376 ~ ~ ~ p=1.000 n=20
Types 7,573 7,573 ~ ~ ~ p=1.000 n=20
Memory Used 27,838k (± 0.02%) 27,836k (± 0.02%) ~ 27,818k 27,849k p=0.644 n=20
Memory Allocs 248,631 (± 0.06%) 248,677 (± 0.06%) ~ 248,205 249,303 p=0.512 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.011s (± 4.18%) 0.010s (± 3.68%) ~ 0.009s 0.012s p=0.417 n=20
Bind Time 0.004s (±12.97%) 0.003s (±11.33%) ~ 0.003s 0.006s p=0.067 n=20
Check Time 0.008s (± 4.96%) 0.008s (± 4.26%) 🔻+0.001s (+ 6.54%) 0.007s 0.010s p=0.037 n=20
Emit Time 0.009s (± 5.73%) 0.008s (± 8.53%) ~ 0.007s 0.013s p=0.077 n=20
Total Time 0.032s (± 2.14%) 0.031s (± 2.66%) ~ 0.029s 0.036s p=0.151 n=20
effect - native
Errors 12 12 ~ ~ ~ p=1.000 n=20
Symbols 1,235,115 1,235,115 ~ ~ ~ p=1.000 n=20
Types 894,113 894,113 ~ ~ ~ p=1.000 n=20
Memory Used 940,516k (± 0.02%) 940,608k (± 0.02%) ~ 939,818k 941,368k p=0.414 n=20
Memory Allocs 12,670,243 (± 0.02%) 12,672,552 (± 0.04%) ~ 12,661,907 12,703,493 p=0.883 n=20
Config Time 0.002s 0.002s ~ ~ ~ p=1.000 n=20
Parse Time 0.152s (± 1.62%) 0.150s (± 1.67%) ~ 0.138s 0.161s p=0.206 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.986s (± 0.83%) 0.979s (± 0.72%) ~ 0.960s 1.011s p=0.250 n=20
Emit Time 0.525s (± 2.18%) 0.537s (± 1.85%) ~ 0.502s 0.575s p=0.109 n=20
Total Time 1.765s (± 0.70%) 1.773s (± 0.53%) ~ 1.738s 1.806s p=0.245 n=20
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=20
Symbols 3,784,019 3,784,019 ~ ~ ~ p=1.000 n=20
Types 1,355,974 1,355,974 ~ ~ ~ p=1.000 n=20
Memory Used 1,837,203k (± 0.08%) 1,836,475k (± 0.08%) ~ 1,831,427k 1,841,601k p=0.512 n=20
Memory Allocs 26,027,094 (± 0.14%) 26,017,983 (± 0.13%) ~ 25,934,420 26,158,034 p=0.461 n=20
Config Time 0.009s (± 2.37%) 0.009s (± 3.06%) ~ 0.008s 0.010s p=0.731 n=20
Parse Time 0.322s (± 3.00%) 0.316s (± 2.46%) ~ 0.292s 0.358s p=0.298 n=20
Bind Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Check Time 3.332s (± 0.97%) 3.297s (± 1.10%) ~ 3.148s 3.514s p=0.057 n=20
Emit Time 0.262s (± 3.43%) 0.260s (± 1.55%) ~ 0.249s 0.277s p=0.963 n=20
Total Time 4.465s (± 1.04%) 4.402s (± 1.02%) -0.063s (- 1.41%) 4.232s 4.646s p=0.019 n=20
sentry - native
Errors 2 2 ~ ~ ~ p=1.000 n=20
Symbols 4,793,245 4,793,245 ~ ~ ~ p=1.000 n=20
Types 2,607,045 2,607,045 ~ ~ ~ p=1.000 n=20
Memory Used 2,880,000k (± 0.03%) 2,881,342k (± 0.03%) +1,342k (+ 0.05%) 2,878,819k 2,885,459k p=0.013 n=20
Memory Allocs 75,361,153 (± 0.27%) 75,404,272 (± 0.22%) ~ 74,876,719 76,016,145 p=0.512 n=20
Config Time 0.026s (± 1.00%) 0.026s (± 1.53%) ~ 0.025s 0.029s p=0.713 n=20
Parse Time 0.508s (± 4.36%) 0.504s (± 5.20%) ~ 0.447s 0.704s p=0.560 n=20
Bind Time 0.191s (± 9.56%) 0.195s (±10.02%) ~ 0.146s 0.255s p=0.952 n=20
Check Time 7.178s (± 1.50%) 7.103s (± 1.45%) ~ 6.852s 7.722s p=0.239 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 7.960s (± 1.30%) 7.886s (± 1.31%) ~ 7.643s 8.483s p=0.231 n=20
social-app - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 1,883,074 1,883,074 ~ ~ ~ p=1.000 n=20
Types 1,158,168 1,158,168 ~ ~ ~ p=1.000 n=20
Memory Used 972,347k (± 0.01%) 972,366k (± 0.02%) ~ 971,288k 972,885k p=0.862 n=20
Memory Allocs 13,575,166 (± 0.29%) 13,573,547 (± 0.09%) ~ 13,525,250 13,625,879 p=0.060 n=20
Config Time 0.008s 0.008s ~ ~ ~ p=1.000 n=20
Parse Time 0.156s (± 2.57%) 0.159s (± 2.75%) ~ 0.147s 0.186s p=0.233 n=20
Bind Time 0.050s (±10.54%) 0.046s (± 9.84%) ~ 0.038s 0.069s p=0.263 n=20
Check Time 1.480s (± 0.58%) 1.473s (± 0.55%) ~ 1.436s 1.512s p=0.285 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.713s (± 0.56%) 1.703s (± 0.61%) ~ 1.668s 1.756s p=0.159 n=20
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 1,184,972 1,184,972 ~ ~ ~ p=1.000 n=20
Types 438,963 438,963 ~ ~ ~ p=1.000 n=20
Memory Used 1,167,337k (± 0.39%) 1,165,555k (± 0.35%) ~ 1,151,305k 1,186,290k p=0.659 n=20
Memory Allocs 47,706,257 (± 0.13%) 47,672,121 (± 0.12%) ~ 47,466,009 47,886,345 p=0.369 n=20
Config Time 0.002s (± 7.57%) 0.002s (± 9.24%) ~ 0.001s 0.002s p=0.369 n=20
Parse Time 0.139s (± 1.47%) 0.138s (± 1.19%) ~ 0.133s 0.146s p=0.296 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.807s (± 0.50%) 0.805s (± 0.37%) ~ 0.794s 0.819s p=0.524 n=20
Emit Time 0.139s (± 0.98%) 0.139s (± 1.73%) ~ 0.133s 0.157s p=0.984 n=20
Total Time 9.373s (± 0.36%) 9.353s (± 0.37%) ~ 9.218s 9.469s p=0.616 n=20
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 263,511 263,511 ~ ~ ~ p=1.000 n=20
Types 196,116 196,116 ~ ~ ~ p=1.000 n=20
Memory Used 224,567k (± 0.01%) 224,655k (± 0.03%) +88k (+ 0.04%) 224,298k 224,986k p=0.001 n=20
Memory Allocs 2,401,203 (± 0.01%) 2,401,471 (± 0.01%) ~ 2,400,220 2,402,225 p=0.056 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.050s (± 4.32%) 0.051s (± 3.04%) ~ 0.044s 0.056s p=0.192 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.379s (± 0.81%) 0.379s (± 1.32%) ~ 0.369s 0.412s p=0.394 n=20
Emit Time 0.048s (± 6.04%) 0.047s (± 4.97%) ~ 0.042s 0.057s p=0.691 n=20
Total Time 0.503s (± 0.89%) 0.505s (± 0.96%) ~ 0.488s 0.528s p=0.723 n=20
t3code-server - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 4,350,661 4,350,661 ~ ~ ~ p=1.000 n=20
Types 3,040,644 3,040,644 ~ ~ ~ p=1.000 n=20
Memory Used 2,433,947k (± 0.03%) 2,434,100k (± 0.03%) ~ 2,432,019k 2,436,627k p=0.738 n=20
Memory Allocs 37,415,189 (± 0.11%) 37,379,564 (± 0.07%) ~ 37,300,497 37,547,593 p=0.192 n=20
Config Time 0.003s 0.003s ~ ~ ~ p=1.000 n=20
Parse Time 0.255s (± 2.05%) 0.254s (± 2.65%) ~ 0.229s 0.282s p=0.995 n=20
Bind Time 0.085s (± 8.77%) 0.085s (± 8.17%) ~ 0.075s 0.124s p=0.931 n=20
Check Time 7.207s (± 0.70%) 7.201s (± 0.55%) ~ 7.089s 7.391s p=0.952 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 7.561s (± 0.67%) 7.553s (± 0.50%) ~ 7.439s 7.757s p=0.878 n=20
tanstack-router - native
Errors 1 1 ~ ~ ~ p=1.000 n=20
Symbols 571,756 571,756 ~ ~ ~ p=1.000 n=20
Types 397,689 397,689 ~ ~ ~ p=1.000 n=20
Memory Used 331,412k (± 0.01%) 331,419k (± 0.01%) ~ 331,132k 331,520k p=0.331 n=20
Memory Allocs 4,388,454 (± 0.11%) 4,389,491 (± 0.16%) ~ 4,378,286 4,431,961 p=0.512 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.040s (± 3.71%) 0.041s (± 3.22%) ~ 0.037s 0.047s p=0.454 n=20
Bind Time 0.012s (± 6.95%) 0.013s (±10.54%) ~ 0.010s 0.021s p=0.426 n=20
Check Time 0.560s (± 0.74%) 0.567s (± 0.87%) ~ 0.549s 0.588s p=0.053 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.632s (± 0.67%) 0.639s (± 0.84%) +0.007s (+ 1.17%) 0.618s 0.663s p=0.042 n=20
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=20
Symbols 231,616 231,616 ~ ~ ~ p=1.000 n=20
Types 181,195 181,195 ~ ~ ~ p=1.000 n=20
Memory Used 193,529k (± 0.02%) 193,562k (± 0.01%) ~ 193,511k 193,661k p=0.060 n=20
Memory Allocs 1,318,038 (± 0.01%) 1,318,144 (± 0.01%) ~ 1,317,733 1,318,722 p=0.144 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.044s (± 3.80%) 0.044s (± 3.34%) ~ 0.037s 0.049s p=0.920 n=20
Bind Time 0.020s (± 6.72%) 0.021s (± 5.85%) ~ 0.018s 0.026s p=0.186 n=20
Check Time 0.303s (± 0.79%) 0.299s (± 1.14%) ~ 0.288s 0.312s p=0.097 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.373s (± 0.93%) 0.370s (± 1.02%) ~ 0.353s 0.386s p=0.255 n=20
vscode - native
Errors 11 11 ~ ~ ~ p=1.000 n=20
Symbols 7,495,436 7,495,436 ~ ~ ~ p=1.000 n=20
Types 4,398,006 4,398,006 ~ ~ ~ p=1.000 n=20
Memory Used 5,193,992k (± 0.02%) 5,195,103k (± 0.02%) ~ 5,191,722k 5,199,297k p=0.108 n=20
Memory Allocs 56,807,601 (± 0.01%) 56,812,035 (± 0.02%) ~ 56,787,597 56,893,461 p=0.758 n=20
Config Time 0.034s (± 0.94%) 0.034s (± 0.94%) ~ 0.033s 0.036s p=1.000 n=20
Parse Time 0.914s (± 1.06%) 0.926s (± 1.75%) ~ 0.849s 1.024s p=0.387 n=20
Bind Time 0.312s (± 1.33%) 0.320s (± 3.41%) ~ 0.296s 0.408s p=0.094 n=20
Check Time 7.877s (± 0.65%) 7.956s (± 0.90%) ~ 7.705s 8.230s p=0.069 n=20
Emit Time 2.768s (± 3.96%) 2.743s (± 3.28%) ~ 2.611s 3.527s p=0.365 n=20
Total Time 11.961s (± 1.02%) 12.038s (± 0.91%) ~ 11.643s 12.608s p=0.176 n=20
webpack - native
Errors 616 616 ~ ~ ~ p=1.000 n=20
Symbols 917,188 917,188 ~ ~ ~ p=1.000 n=20
Types 636,859 636,859 ~ ~ ~ p=1.000 n=20
Memory Used 693,601k (± 0.01%) 693,594k (± 0.01%) ~ 693,261k 694,080k p=0.952 n=20
Memory Allocs 6,499,681 (± 0.05%) 6,501,158 (± 0.05%) ~ 6,495,240 6,515,816 p=0.640 n=20
Config Time 0.004s 0.004s ~ ~ ~ p=1.000 n=20
Parse Time 0.143s (± 3.44%) 0.140s (± 3.39%) ~ 0.123s 0.165s p=0.515 n=20
Bind Time 0.048s (± 9.83%) 0.047s (± 8.52%) ~ 0.039s 0.072s p=0.909 n=20
Check Time 1.176s (± 1.95%) 1.158s (± 1.30%) ~ 1.112s 1.246s p=0.409 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.394s (± 1.96%) 1.374s (± 1.14%) ~ 1.343s 1.473s p=0.794 n=20
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 640,490 640,490 ~ ~ ~ p=1.000 n=20
Types 387,984 387,984 ~ ~ ~ p=1.000 n=20
Memory Used 351,015k (± 0.03%) 350,960k (± 0.02%) ~ 350,750k 351,360k p=0.490 n=20
Memory Allocs 3,992,380 (± 0.08%) 3,992,414 (± 0.09%) ~ 3,982,488 4,018,128 p=0.461 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.061s (± 3.12%) 0.060s (± 2.50%) ~ 0.054s 0.066s p=0.455 n=20
Bind Time 0.020s (± 8.93%) 0.021s (±11.33%) ~ 0.017s 0.030s p=0.950 n=20
Check Time 0.413s (± 0.84%) 0.413s (± 0.63%) ~ 0.405s 0.428s p=0.835 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.499s (± 0.88%) 0.500s (± 0.82%) ~ 0.489s 0.522s p=0.804 n=20
System info unknown
Hosts
  • native
Scenarios
  • Compiler-Unions - native
  • angular-1 - native
  • arktype - native
  • class-transformer - native
  • effect - native
  • mui-docs - native
  • sentry - native
  • social-app - native
  • strada-build-src - native
  • strada-compiler - native
  • t3code-server - native
  • tanstack-router - native
  • ts-pre-modules - native
  • vscode - native
  • webpack - native
  • xstate-main - native
Benchmark Name Iterations
Current pr 20
Baseline baseline 20

Developer Information:

Download Benchmarks

This branch has not been deployed

No deployments
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

None yet

Development

Successfully merging this pull request may close these issues.

2 participants