Skip to content

Size new arena chunks from the previous chunk's capacity - #65031

Merged
Jake Bailey (jakebailey) merged 3 commits into
microsoft:mainfrom
jakebailey:perf/arena-growth
Oct 30, 2026
Merged

Jake Bailey (jakebailey) merged 3 commits into
microsoft:mainfrom
jakebailey:perf/arena-growth

Conversation

@jakebailey

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

Copy link
Copy Markdown
Member

Arena.NewSlice computed the next chunk size from len(a.data), but it grows whenever the request does not fit in the remaining space, which usually happens before the current chunk is full. Doubling the used length rather than the chunk capacity could make the next chunk the same size as, or smaller than, the one being replaced. Arenas that mostly serve slices then kept allocating small chunks and never reached the intended steady-state size.

Base the growth on cap(a.data) so each chunk doubles the previous one up to the size ceiling. Arena.New only grows when len == cap, so it already behaved correctly; it now uses cap as well for consistency.

Thanks Steven (@teamchong) for finding this!

Arena.NewSlice computed the next chunk size from len(a.data), but it
grows whenever the request does not fit in the remaining space, which
usually happens before the current chunk is full. Doubling the used
length rather than the chunk capacity could make the next chunk the
same size as, or smaller than, the one being replaced. Arenas that
mostly serve slices then kept allocating small chunks and never
reached the intended steady-state size.

Base the growth on cap(a.data) so each chunk doubles the previous one
up to the size ceiling. Arena.New only grows when len == cap, so it
already behaved correctly; it now uses cap as well for consistency.

Co-authored-by: Steven Chong <25894545+teamchong@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings October 29, 2026 20:49
@github-project-automation github-project-automation Bot moved this to Not started in PR Backlog Oct 29, 2026
@typescript-automation typescript-automation Bot added Author: Team For Uncommitted Bug PR for untriaged, rejected, closed or missing bug labels 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

Copy link
Copy Markdown
Member Author

This one's definitely an oops on my part

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

A regression test is still needed for growth from a partially used arena chunk, since existing assertions do not distinguish backing-capacity growth from separate allocations.

1 open issue
What changed in this PR

This PR fixes chunk growth in the native compiler’s arena allocator so slice-heavy workloads can reach the intended chunk size.

Changes:

  • Base Arena.NewSlice growth on the previous chunk’s capacity rather than its used length.
  • Use capacity in Arena.New for consistency, without changing its behavior.
File Description
tsc/​internal/​core/​arena.go Uses chunk capacity when calculating the next allocation size.

Review effort: Balanced

Comment thread tsc/internal/core/arena.go Resolved

Copilot AI commented Oct 29, 2026

Copy link
Copy Markdown
Contributor

One or more custom setup steps configured for this repository failed during this Copilot code review run:

Run {

Setup steps run before each review. If the review above is missing context, or no review was posted at all, the failing step above may be the cause. See the workflow run for failure details, fix your setup steps configuration, and re-request a review.

Note

You can configure setup steps for Copilot code review separately from Copilot cloud agent with a copilot-code-review.yml file. Read the docs for details.

@jakebailey Jake Bailey (jakebailey) added the Domain: Performance Reports of unusually slow behavior label Oct 29, 2026
The existing arena tests only check the slices NewSlice returns, and
those checks pass whether a slice is carved from a new chunk or
allocated on its own. So they could not catch next-chunk sizing based
on the used length instead of the chunk capacity.

The new package-internal test starts from a partially used chunk and
requests more than the remaining space. It checks that the replacement
chunk grows from the previous capacity and that the slice is carved
from it.

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

No active review issues are reported for the arena chunk growth fix.

No open issues 🎉

1 resolved since last review

Review effort: Balanced

The test asserted the arena's private chunk capacity, pinning one
implementation detail rather than observable behavior. It adds
maintenance cost without guarding anything users can see, so drop it.
@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,165k (± 0.03%) 104,135k (± 0.03%) ~ 104,010k 104,248k p=0.082 n=20
Memory Allocs 1,263,607 (± 0.01%) 1,263,817 (± 0.01%) +209 (+ 0.02%) 1,263,478 1,264,524 p=0.020 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.023s (± 3.50%) 0.023s (± 4.43%) ~ 0.019s 0.027s p=0.494 n=20
Bind Time 0.009s (± 4.42%) 0.009s (± 5.14%) ~ 0.007s 0.011s p=0.136 n=20
Check Time 0.226s (± 0.94%) 0.225s (± 1.24%) ~ 0.215s 0.238s p=0.249 n=20
Emit Time 0.151s (± 1.63%) 0.151s (± 1.16%) ~ 0.144s 0.159s p=0.920 n=20
Total Time 0.413s (± 0.80%) 0.412s (± 0.75%) ~ 0.398s 0.425s p=0.464 n=20
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=20
Symbols 586,512 (± 0.02%) 586,516 (± 0.02%) ~ 586,002 586,854 p=1.000 n=20
Types 241,688 (± 0.00%) 241,687 (± 0.00%) ~ 241,683 241,698 p=0.972 n=20
Memory Used 517,926k (± 0.02%) 517,984k (± 0.01%) ~ 517,711k 518,165k p=0.317 n=20
Memory Allocs 7,798,904 (± 0.12%) 7,798,091 (± 0.14%) ~ 7,783,933 7,861,136 p=0.478 n=20
Config Time 0.009s 0.009s ~ ~ ~ p=1.000 n=20
Parse Time 0.121s (± 1.54%) 0.124s (± 2.65%) ~ 0.111s 0.141s p=0.233 n=20
Bind Time 0.048s (±10.82%) 0.041s (± 7.19%) 🟩-0.007s (-14.72%) 0.036s 0.059s p=0.025 n=20
Check Time 0s 0s ~ ~ ~ p=1.000 n=20
Emit Time 0.853s (± 1.01%) 0.843s (± 0.97%) ~ 0.821s 0.876s p=0.082 n=20
Total Time 1.043s (± 1.25%) 1.027s (± 1.04%) ~ 1.004s 1.075s p=0.071 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,335k (± 0.01%) ~ 497,042k 497,473k p=0.080 n=20
Memory Allocs 12,106,816 (± 0.01%) 12,107,690 (± 0.01%) ~ 12,104,883 12,112,962 p=0.253 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.041s (± 2.82%) 0.043s (± 3.91%) ~ 0.039s 0.053s p=0.095 n=20
Bind Time 0.013s (± 6.85%) 0.014s (±10.28%) ~ 0.011s 0.020s p=0.939 n=20
Check Time 0.978s (± 0.55%) 0.975s (± 0.60%) ~ 0.952s 1.004s p=0.239 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.062s (± 0.44%) 1.062s (± 0.57%) ~ 1.041s 1.091s p=0.587 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,835k (± 0.02%) 27,844k (± 0.02%) +9k (+ 0.03%) 27,831k 27,877k p=0.004 n=20
Memory Allocs 248,709 (± 0.05%) 248,468 (± 0.05%) -241 (- 0.10%) 247,900 248,848 p=0.009 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.012s (± 2.98%) 0.011s (± 3.08%) ~ 0.009s 0.012s p=0.177 n=20
Bind Time 0.004s (±13.92%) 0.004s (±11.18%) ~ 0.002s 0.005s p=0.786 n=20
Check Time 0.008s (± 4.16%) 0.008s (± 5.10%) ~ 0.006s 0.009s p=0.304 n=20
Emit Time 0.008s (± 7.52%) 0.009s (± 8.09%) ~ 0.007s 0.013s p=0.185 n=20
Total Time 0.032s (± 2.89%) 0.032s (± 2.49%) ~ 0.028s 0.037s p=0.550 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,524k (± 0.02%) 940,843k (± 0.02%) +319k (+ 0.03%) 940,025k 941,904k p=0.033 n=20
Memory Allocs 12,670,502 (± 0.02%) 12,674,809 (± 0.05%) ~ 12,661,380 12,721,733 p=0.369 n=20
Config Time 0.002s (± 5.09%) 0.002s ~ ~ ~ p=1.000 n=20
Parse Time 0.148s (± 1.87%) 0.147s (± 1.87%) ~ 0.134s 0.159s p=0.703 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.948s (± 0.85%) 0.944s (± 0.71%) ~ 0.921s 0.970s p=0.713 n=20
Emit Time 0.504s (± 1.64%) 0.510s (± 2.80%) ~ 0.448s 0.558s p=0.304 n=20
Total Time 1.693s (± 0.67%) 1.697s (± 0.88%) ~ 1.634s 1.754s p=0.743 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,838,375k (± 0.07%) 1,836,650k (± 0.07%) ~ 1,829,712k 1,840,495k p=0.091 n=20
Memory Allocs 26,010,421 (± 0.08%) 26,008,769 (± 0.15%) ~ 25,883,234 26,203,108 p=0.495 n=20
Config Time 0.009s 0.009s (± 1.61%) ~ 0.008s 0.009s p=0.487 n=20
Parse Time 0.308s (± 2.90%) 0.302s (± 2.87%) ~ 0.264s 0.348s p=0.654 n=20
Bind Time 0.001s 0.001s (± 9.93%) ~ 0.001s 0.002s p=1.000 n=20
Check Time 3.298s (± 0.86%) 3.294s (± 1.90%) ~ 3.172s 3.810s p=0.245 n=20
Emit Time 0.259s (± 1.58%) 0.265s (± 1.92%) ~ 0.250s 0.292s p=0.087 n=20
Total Time 4.400s (± 1.25%) 4.382s (± 1.54%) ~ 4.246s 4.933s p=0.414 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,881,214k (± 0.03%) 2,880,734k (± 0.02%) ~ 2,878,901k 2,883,512k p=0.429 n=20
Memory Allocs 75,232,711 (± 0.16%) 75,146,442 (± 0.12%) ~ 74,816,262 75,754,285 p=0.383 n=20
Config Time 0.026s (± 0.74%) 0.026s (± 1.26%) ~ 0.025s 0.028s p=0.716 n=20
Parse Time 0.476s (± 3.03%) 0.477s (± 5.49%) ~ 0.428s 0.668s p=0.457 n=20
Bind Time 0.170s (±11.18%) 0.188s (±11.13%) ~ 0.136s 0.248s p=0.387 n=20
Check Time 6.717s (± 0.45%) 6.704s (± 0.78%) ~ 6.593s 7.060s p=0.256 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 7.438s (± 0.33%) 7.447s (± 0.71%) ~ 7.319s 7.797s p=0.678 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,575k (± 0.02%) 972,491k (± 0.01%) ~ 972,017k 972,788k p=0.355 n=20
Memory Allocs 13,561,162 (± 0.11%) 13,571,600 (± 0.24%) ~ 13,517,767 13,843,030 p=0.904 n=20
Config Time 0.009s (± 9.86%) 0.008s (± 5.34%) ~ 0.007s 0.012s p=0.767 n=20
Parse Time 0.165s (± 3.94%) 0.163s (± 3.11%) ~ 0.152s 0.194s p=0.723 n=20
Bind Time 0.050s (±11.98%) 0.045s (± 7.65%) ~ 0.040s 0.070s p=0.571 n=20
Check Time 1.563s (± 1.07%) 1.545s (± 0.76%) ~ 1.486s 1.598s p=0.155 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.803s (± 1.23%) 1.778s (± 0.82%) ~ 1.715s 1.826s p=0.126 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,168,772k (± 0.54%) 1,164,850k (± 0.16%) ~ 1,154,601k 1,171,387k p=0.904 n=20
Memory Allocs 47,686,127 (± 0.13%) 47,679,034 (± 0.09%) ~ 47,522,296 47,861,864 p=1.000 n=20
Config Time 0.002s (±12.90%) 0.002s (±18.20%) ~ 0.000s 0.002s p=0.561 n=20
Parse Time 0.142s (± 2.11%) 0.140s (± 1.65%) ~ 0.130s 0.150s p=0.551 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.816s (± 0.49%) 0.826s (± 1.38%) ~ 0.807s 0.909s p=0.344 n=20
Emit Time 0.143s (± 2.00%) 0.145s (± 2.48%) ~ 0.138s 0.164s p=0.355 n=20
Total Time 9.488s (± 0.58%) 9.555s (± 0.90%) ~ 9.355s 10.018s p=0.245 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,583k (± 0.02%) 224,627k (± 0.02%) ~ 224,509k 224,778k p=0.274 n=20
Memory Allocs 2,401,534 (± 0.03%) 2,401,474 (± 0.01%) ~ 2,400,066 2,402,611 p=0.583 n=20
Config Time 0.000s (±208.60%) 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.050s (± 3.67%) 0.051s (± 4.06%) ~ 0.041s 0.059s p=0.497 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.388s (± 0.59%) 0.389s (± 1.01%) ~ 0.376s 0.416s p=0.743 n=20
Emit Time 0.049s (± 4.77%) 0.048s (± 4.69%) ~ 0.043s 0.056s p=0.866 n=20
Total Time 0.516s (± 0.85%) 0.516s (± 0.80%) ~ 0.503s 0.534s p=0.920 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,686k (± 0.03%) 2,434,379k (± 0.02%) ~ 2,432,336k 2,437,015k p=0.076 n=20
Memory Allocs 37,376,012 (± 0.15%) 37,368,824 (± 0.08%) ~ 37,287,351 37,529,218 p=0.429 n=20
Config Time 0.003s (± 6.00%) 0.003s (±12.36%) ~ 0.002s 0.006s p=1.000 n=20
Parse Time 0.247s (± 1.82%) 0.248s (± 2.06%) ~ 0.230s 0.280s p=0.899 n=20
Bind Time 0.086s (± 9.60%) 0.090s (±11.88%) ~ 0.076s 0.174s p=0.162 n=20
Check Time 7.235s (± 0.54%) 7.230s (± 0.44%) ~ 7.143s 7.392s p=1.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 7.581s (± 0.49%) 7.583s (± 0.41%) ~ 7.493s 7.732s p=0.941 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,409k (± 0.01%) 331,454k (± 0.01%) ~ 331,281k 331,648k p=0.183 n=20
Memory Allocs 4,391,218 (± 0.15%) 4,384,960 (± 0.08%) ~ 4,377,098 4,402,241 p=0.149 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.039s (± 3.71%) 0.040s (± 2.92%) ~ 0.036s 0.044s p=0.237 n=20
Bind Time 0.013s (±11.37%) 0.013s (± 8.93%) ~ 0.011s 0.020s p=0.505 n=20
Check Time 0.568s (± 0.59%) 0.572s (± 0.57%) ~ 0.559s 0.586s p=0.255 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.640s (± 0.65%) 0.645s (± 0.67%) ~ 0.626s 0.666s p=0.143 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,535k (± 0.01%) 193,540k (± 0.01%) ~ 193,414k 193,691k p=0.784 n=20
Memory Allocs 1,318,222 (± 0.02%) 1,318,129 (± 0.02%) ~ 1,317,567 1,319,311 p=0.560 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.044s (± 2.46%) 0.044s (± 2.32%) ~ 0.039s 0.047s p=0.751 n=20
Bind Time 0.020s (± 3.74%) 0.022s (± 5.32%) 🔻+0.002s (+ 7.33%) 0.017s 0.027s p=0.016 n=20
Check Time 0.302s (± 1.63%) 0.295s (± 1.02%) -0.006s (- 2.12%) 0.287s 0.308s p=0.014 n=20
Emit Time 0.000s (±208.60%) 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.373s (± 1.59%) 0.367s (± 0.73%) ~ 0.357s 0.381s p=0.074 n=20
vscode - native
Errors 11 11 ~ ~ ~ p=1.000 n=20
Symbols 7,501,886 7,501,886 ~ ~ ~ p=1.000 n=20
Types 4,415,089 4,415,089 ~ ~ ~ p=1.000 n=20
Memory Used 5,204,554k (± 0.01%) 5,205,091k (± 0.03%) ~ 5,201,693k 5,214,949k p=0.947 n=20
Memory Allocs 56,944,039 (± 0.01%) 56,947,851 (± 0.02%) ~ 56,923,113 56,995,184 p=0.429 n=20
Config Time 0.033s (± 0.63%) 0.033s (± 0.63%) ~ 0.032s 0.033s p=1.000 n=20
Parse Time 0.878s (± 1.67%) 0.882s (± 1.02%) ~ 0.838s 0.923s p=0.973 n=20
Bind Time 0.309s (± 7.05%) 0.303s (± 7.12%) ~ 0.287s 0.499s p=0.416 n=20
Check Time 7.614s (± 0.58%) 7.623s (± 0.36%) ~ 7.424s 7.694s p=0.673 n=20
Emit Time 2.662s (± 4.69%) 2.629s (± 3.46%) ~ 2.530s 3.404s p=0.588 n=20
Total Time 11.552s (± 0.92%) 11.525s (± 0.75%) ~ 11.408s 12.269s p=0.815 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,556k (± 0.02%) 693,609k (± 0.01%) ~ 693,034k 694,073k p=0.449 n=20
Memory Allocs 6,499,181 (± 0.03%) 6,496,659 (± 0.03%) ~ 6,490,719 6,503,097 p=0.063 n=20
Config Time 0.004s 0.004s ~ ~ ~ p=1.000 n=20
Parse Time 0.138s (± 3.07%) 0.142s (± 3.63%) ~ 0.119s 0.159s p=0.143 n=20
Bind Time 0.044s (±11.06%) 0.047s (±11.17%) ~ 0.036s 0.072s p=0.392 n=20
Check Time 1.138s (± 1.04%) 1.128s (± 0.87%) ~ 1.103s 1.197s p=0.122 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.348s (± 1.01%) 1.345s (± 0.90%) ~ 1.316s 1.415s p=0.804 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 350,913k (± 0.02%) 351,025k (± 0.02%) +111k (+ 0.03%) 350,755k 351,256k p=0.030 n=20
Memory Allocs 3,994,408 (± 0.07%) 3,992,294 (± 0.06%) ~ 3,982,534 4,002,681 p=0.461 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.062s (± 3.03%) 0.061s (± 2.78%) ~ 0.055s 0.068s p=0.423 n=20
Bind Time 0.023s (±11.18%) 0.022s (± 9.82%) ~ 0.018s 0.033s p=0.659 n=20
Check Time 0.438s (± 2.26%) 0.435s (± 1.58%) ~ 0.414s 0.471s p=0.909 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.528s (± 1.85%) 0.524s (± 1.40%) ~ 0.501s 0.564s p=0.524 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

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.

The NewSlice growth calculation correctly needs the previous capacity, not its partially consumed length; New remains equivalent because it only grows at length equal to capacity. Existing arena tests pass. No issues found.

@github-project-automation github-project-automation Bot moved this from Not started to Needs merge in PR Backlog Oct 30, 2026
@jakebailey
Jake Bailey (jakebailey) added this pull request to the merge queue Oct 30, 2026
Merged via the queue into microsoft:main with commit cb5f346 Oct 30, 2026
29 checks passed
@jakebailey
Jake Bailey (jakebailey) deleted the perf/arena-growth branch October 30, 2026 14:51
@github-project-automation github-project-automation Bot moved this from Needs merge to Done in PR Backlog Oct 30, 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