Skip to content

Lazy member resolution for class and interface types - #64915

Merged
Anders Hejlsberg (ahejlsberg) merged 11 commits into
mainfrom
lazy-member-resolution
Oct 23, 2026
Merged

Anders Hejlsberg (ahejlsberg) merged 11 commits into
mainfrom
lazy-member-resolution

Conversation

@ahejlsberg

@ahejlsberg Anders Hejlsberg (ahejlsberg) commented Oct 21, 2026 •

Copy link
Copy Markdown
Member

Inspired by #64765, this PR implements lazy member resolution for class and interface types. The PR computes shared member layouts for classes and interfaces and uses these layouts to lazily populate the properties of type instances.

The single baseline change is due to an improvement in member sorting that causes the numerically named members and the length member of tuple types to be sorted before those members that are inherited from Array<T>.

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

Copy link
Copy Markdown
Member Author

TypeScript Bot (@typescript-bot) test it

@ahejlsberg

Copy link
Copy Markdown
Member Author

TypeScript Bot (@typescript-bot) test it

@typescript-automation

typescript-automation Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

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

Command Status Results
test top400 ✅ Started 👀 Results
user test this ✅ Started ✅ Results
run dt ✅ Started ✅ Results
perf test this faster ✅ Started

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

The layout-cache key can conflate base instantiations with different inherited members, causing missing properties and nil property slots.

1 open issue
What changed in this PR

This PR reduces eager member instantiation in the native TypeScript checker by sharing class and interface member layouts and resolving properties on demand.

Changes:

  • Adds cached member layouts and per-type lazy property resolution.
  • Updates checker and language-service consumers to use lazy-aware accessors.
  • Adjusts a diagnostic baseline for the changed property ordering.
File Description
tsc/​testdata/​baselines/​reference/​conformance/​arityAndOrderCompatibility01.errors.txt Updates which incompatible properties diagnostics report.
tsc/​internal/​checker/​types.go Adds member layouts, lazy state, and property accessors.
tsc/​internal/​checker/​services.go Uses lazy-aware member enumeration for modules.
tsc/​internal/​checker/​relater.go Uses layout metadata during structural comparisons.
tsc/​internal/​checker/​nodebuilderimpl.go Resolves lazy members when building type nodes.
tsc/​internal/​checker/​nodebuilder_hover.go Resolves properties before filtering inherited hover members.
tsc/​internal/​checker/​checker.go Creates and caches layouts and integrates lazy lookups.

Review effort: Balanced

Comment thread tsc/internal/checker/checker.go Outdated
Comment on lines +19634 to +19635
if baseType.objectFlags&ObjectFlagsReference != 0 {
b.writeType(c.getTargetType(baseType))
@jakebailey

Copy link
Copy Markdown
Member

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

@typescript-automation

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

Hey Anders Hejlsberg (@ahejlsberg), the results of running the DT tests are ready.

Everything looks the same!

You can check the log here.

@typescript-automation

Copy link
Copy Markdown
Contributor

Anders Hejlsberg (@ahejlsberg) Here are the results of running the user tests with tsc comparing baseline and pr:

Everything looks good!

@typescript-automation

Copy link
Copy Markdown
Contributor

Jake Bailey (@jakebailey), the perf run you requested failed. You can check the log here.

@jakebailey

Copy link
Copy Markdown
Member

Failure was due to:

Hosts: native
  [1/1] Measuring scenario 'arktype - native'...
>> panic: runtime error: invalid memory address or nil pointer dereference [recovered, repanicked]
>> [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x8169f2]
>> 
>> goroutine 5157 [running]:
>> sync.(*WaitGroup).Go.func1.1()
>> 	/tmp/tsperf-build-TfloUx/home/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.27.0.linux-amd64/src/sync/waitgroup.go:251 +0x45
>> panic({0x19f0070?, 0x1b40450?})
>> 	/tmp/tsperf-build-TfloUx/home/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.27.0.linux-amd64/src/runtime/panic.go:859 +0x125
>> github.com/microsoft/TypeScript/tsc/internal/ast.(*Symbol).Flags(...)
>> 	/home/vsts/work/1/TypeScript/tsc/internal/ast/symbol.go:43
>> github.com/microsoft/TypeScript/tsc/internal/checker.(*Checker).checkSpreadPropOverrides(0x2ceca7f64008, 0x2cecab5535d0?, 0x2ceca97c89b0, 0x2ceca0fb3ad0)
>> 	/home/vsts/work/1/TypeScript/tsc/internal/checker/checker.go:13625 +0

@typescript-automation

Copy link
Copy Markdown
Contributor

Anders Hejlsberg (@ahejlsberg) Here are the results of running the top 400 repos with tsc comparing baseline and pr:

Something interesting changed - please have a look.

Details

reactive-resume/reactive-resume

20 of 24 projects failed to build with the old tsc and were ignored

apps/web/tsconfig.json

  • error TS2559: Type '{ input: { username: string; slug: string; }; } & Omit<QueryOptionsBase<{ id: string; slug: string; tags: string[]; isPublic: boolean; showDownloadButtons: boolean; isLocked: boolean; data: { [x: string]: unknown; picture: { hidden: boolean; ... 9 more ...; shadowWidth: number; }; ... 4 more ...; metadata: ...; }; n...' has no properties in common with type 'EnsureQueryDataOptions<unknown, Error, unknown, readonly unknown[], never>'.
  • error TS18046: 'resume' is of type 'unknown'.
  • error TS2559: Type '{ input: { id: string; }; } & Omit<QueryOptionsBase<{ id: string; name: string; slug: string; tags: string[]; isPublic: boolean; showDownloadButtons: boolean; isLocked: boolean; data: { [x: string]: unknown; picture: { hidden: boolean; ... 9 more ...; shadowWidth: number; }; ... 4 more ...; metadata: ...; }; created...' has no properties in common with type 'EnsureQueryDataOptions<unknown, Error, unknown, readonly unknown[], never>'.

@jakebailey

This comment was marked as outdated.

@typescript-automation

This comment was marked as outdated.

@jakebailey

Copy link
Copy Markdown
Member

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

@typescript-automation

typescript-automation Bot commented Oct 21, 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 115,276 88,496 🟩-26,780 (-23.23%) ~ ~ p=0.000 n=12
Types 79,613 79,607 -6 (- 0.01%) ~ ~ p=0.000 n=12
Memory Used 113,512k (± 0.07%) 109,459k (± 0.09%) 🟩-4,054k (- 3.57%) 109,213k 109,695k p=0.000 n=12
Memory Allocs 2,212,341 (± 0.01%) 2,237,480 (± 0.01%) +25,139 (+ 1.14%) 2,237,102 2,238,142 p=0.000 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.039s (± 4.26%) 0.039s (± 3.08%) ~ 0.036s 0.042s p=0.807 n=12
Bind Time 0.014s (± 9.77%) 0.014s (±11.64%) ~ 0.011s 0.019s p=0.808 n=12
Check Time 0.465s (± 0.82%) 0.481s (± 0.87%) +0.016s (+ 3.48%) 0.470s 0.489s p=0.000 n=12
Emit Time 0.265s (± 2.65%) 0.263s (± 1.75%) ~ 0.251s 0.274s p=0.619 n=12
Total Time 0.789s (± 1.07%) 0.803s (± 0.60%) +0.014s (+ 1.79%) 0.794s 0.823s p=0.006 n=12
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=12
Symbols 846,848 (± 0.09%) 587,032 (± 0.02%) 🟩-259,816 (-30.68%) 586,807 587,284 p=0.000 n=12
Types 247,033 (± 0.00%) 241,724 (± 0.00%) -5,309 (- 2.15%) 241,720 241,733 p=0.000 n=12
Memory Used 596,329k (± 0.04%) 553,477k (± 0.02%) 🟩-42,853k (- 7.19%) 553,258k 553,860k p=0.000 n=12
Memory Allocs 13,128,712 (± 0.02%) 13,362,486 (± 0.06%) +233,774 (+ 1.78%) 13,353,657 13,396,076 p=0.000 n=12
Config Time 0.017s (± 1.95%) 0.017s +0.000s (+ 2.51%) ~ ~ p=0.037 n=12
Parse Time 0.222s (± 2.80%) 0.222s (± 2.95%) ~ 0.208s 0.243s p=0.898 n=12
Bind Time 0.082s (±13.97%) 0.087s (±14.16%) ~ 0.058s 0.115s p=0.486 n=12
Check Time 0s 0s ~ ~ ~ p=1.000 n=12
Emit Time 1.558s (± 1.16%) 1.504s (± 1.10%) 🟩-0.054s (- 3.47%) 1.454s 1.533s p=0.000 n=12
Total Time 1.899s (± 1.22%) 1.849s (± 1.21%) -0.050s (- 2.62%) 1.771s 1.885s p=0.009 n=12
arktype - native
⚠️ Failed failed
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=12
Symbols 4,331,983 3,864,051 🟩-467,932 (-10.80%) ~ ~ p=0.000 n=12
Types 1,370,520 1,370,331 -189 (- 0.01%) ~ ~ p=0.000 n=12
Memory Used 2,625,227k (± 0.05%) 2,329,554k (± 0.07%) 🟩-295,674k (-11.26%) 2,325,508k 2,333,747k p=0.000 n=12
Memory Allocs 27,686,776 (± 0.06%) 29,644,064 (± 0.05%) 🔻+1,957,288 (+ 7.07%) 29,606,945 29,682,245 p=0.000 n=12
Config Time 0.017s (± 1.45%) 0.017s (± 1.45%) ~ 0.016s 0.017s p=1.000 n=12
Parse Time 0.466s (± 2.59%) 0.476s (± 2.25%) ~ 0.447s 0.507s p=0.284 n=12
Bind Time 0.002s 0.002s ~ ~ ~ p=1.000 n=12
Check Time 7.174s (± 0.50%) 6.654s (± 0.53%) 🟩-0.520s (- 7.25%) 6.598s 6.775s p=0.000 n=12
Emit Time 0.520s (±10.95%) 0.485s (± 7.29%) ~ 0.418s 0.643s p=0.618 n=12
Total Time 8.934s (± 0.58%) 8.395s (± 0.73%) 🟩-0.539s (- 6.03%) 8.317s 8.615s p=0.000 n=12
sentry - native
Errors 2 2 ~ ~ ~ p=1.000 n=12
Symbols 7,459,653 4,807,298 🟩-2,652,355 (-35.56%) ~ ~ p=0.000 n=12
Types 2,647,172 2,607,067 -40,105 (- 1.52%) ~ ~ p=0.000 n=12
Memory Used 3,803,376k (± 0.03%) 3,215,241k (± 0.04%) 🟩-588,135k (-15.46%) 3,211,916k 3,219,804k p=0.000 n=12
Memory Allocs 77,196,276 (± 0.09%) 76,700,808 (± 0.06%) -495,468 (- 0.64%) 76,566,304 76,803,674 p=0.000 n=12
Config Time 0.061s (± 0.51%) 0.061s (± 0.53%) ~ 0.060s 0.061s p=1.000 n=12
Parse Time 1.016s (± 1.78%) 1.013s (± 1.40%) ~ 0.982s 1.049s p=0.787 n=12
Bind Time 0.313s (± 7.77%) 0.305s (±11.37%) ~ 0.263s 0.441s p=0.385 n=12
Check Time 14.844s (± 0.49%) 13.771s (± 0.37%) 🟩-1.073s (- 7.23%) 13.615s 13.875s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 16.318s (± 0.50%) 15.224s (± 0.38%) 🟩-1.093s (- 6.70%) 15.064s 15.449s p=0.000 n=12
social-app - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 2,568,629 1,884,075 🟩-684,554 (-26.65%) ~ ~ p=0.000 n=12
Types 1,163,035 1,158,474 -4,561 (- 0.39%) ~ ~ p=0.000 n=12
Memory Used 1,212,818k (± 0.01%) 1,060,185k (± 0.01%) 🟩-152,633k (-12.58%) 1,059,838k 1,060,703k p=0.000 n=12
Memory Allocs 13,989,060 (± 0.14%) 14,002,876 (± 0.16%) ~ 13,959,258 14,067,520 p=0.514 n=12
Config Time 0.017s (± 1.65%) 0.017s (± 1.65%) ~ 0.017s 0.018s p=1.000 n=12
Parse Time 0.357s (± 2.75%) 0.350s (± 1.90%) ~ 0.327s 0.363s p=0.147 n=12
Bind Time 0.079s (± 7.58%) 0.085s (±13.61%) ~ 0.073s 0.132s p=0.102 n=12
Check Time 3.592s (± 0.33%) 3.264s (± 0.57%) 🟩-0.328s (- 9.13%) 3.211s 3.308s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 4.069s (± 0.36%) 3.739s (± 0.28%) 🟩-0.329s (- 8.10%) 3.711s 3.770s p=0.000 n=12
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,388,680 1,185,689 🟩-202,991 (-14.62%) ~ ~ p=0.000 n=12
Types 441,862 438,967 -2,895 (- 0.66%) ~ ~ p=0.000 n=12
Memory Used 1,312,358k (± 0.71%) 1,280,225k (± 0.68%) -32,133k (- 2.45%) 1,253,603k 1,299,246k p=0.000 n=12
Memory Allocs 78,034,139 (± 0.13%) 79,199,792 (± 0.11%) +1,165,653 (+ 1.49%) 78,810,051 79,346,111 p=0.000 n=12
Config Time 0.004s (±10.84%) 0.004s (±12.88%) ~ 0.003s 0.006s p=0.745 n=12
Parse Time 0.307s (± 1.80%) 0.306s (± 1.89%) ~ 0.293s 0.317s p=0.744 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 2.001s (± 0.47%) 1.953s (± 0.64%) -0.048s (- 2.39%) 1.914s 1.983s p=0.000 n=12
Emit Time 0.351s (± 3.71%) 0.384s (± 3.83%) 🔻+0.032s (+ 9.20%) 0.358s 0.434s p=0.002 n=12
Total Time 23.638s (± 0.51%) 23.627s (± 0.38%) ~ 23.368s 23.819s p=0.843 n=12
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 334,953 263,752 🟩-71,201 (-21.26%) ~ ~ p=0.000 n=12
Types 197,616 196,118 -1,498 (- 0.76%) ~ ~ p=0.000 n=12
Memory Used 247,371k (± 0.03%) 236,351k (± 0.03%) 🟩-11,020k (- 4.45%) 236,178k 236,481k p=0.000 n=12
Memory Allocs 4,325,803 (± 0.01%) 4,355,689 (± 0.01%) +29,887 (+ 0.69%) 4,354,302 4,356,920 p=0.000 n=12
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=12
Parse Time 0.115s (± 5.15%) 0.110s (± 3.55%) ~ 0.101s 0.121s p=0.213 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 0.960s (± 0.62%) 0.943s (± 0.52%) -0.017s (- 1.73%) 0.933s 0.957s p=0.000 n=12
Emit Time 0.150s (± 5.82%) 0.143s (± 8.26%) ~ 0.098s 0.164s p=0.401 n=12
Total Time 1.279s (± 0.75%) 1.251s (± 1.02%) -0.027s (- 2.15%) 1.206s 1.282s p=0.001 n=12
t3code-server - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 11,588,087 4,352,206 🟩-7,235,881 (-62.44%) ~ ~ p=0.000 n=12
Types 3,062,556 3,040,691 -21,865 (- 0.71%) ~ ~ p=0.000 n=12
Memory Used 3,945,094k (± 0.01%) 2,615,903k (± 0.03%) 🟩-1,329,192k (-33.69%) 2,614,391k 2,618,397k p=0.000 n=12
Memory Allocs 41,547,735 (± 0.07%) 38,735,377 (± 0.03%) 🟩-2,812,358 (- 6.77%) 38,696,983 38,753,538 p=0.000 n=12
Config Time 0.006s 0.006s ~ ~ ~ p=1.000 n=12
Parse Time 0.584s (± 2.05%) 0.578s (± 2.01%) ~ 0.542s 0.615s p=0.523 n=12
Bind Time 0.182s (±16.04%) 0.157s (± 2.91%) ~ 0.148s 0.174s p=0.898 n=12
Check Time 18.522s (± 0.17%) 16.509s (± 0.27%) 🟩-2.013s (-10.87%) 16.401s 16.678s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 19.311s (± 0.22%) 17.265s (± 0.28%) 🟩-2.046s (-10.60%) 17.148s 17.432s p=0.000 n=12
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=12
Symbols 303,834 231,903 🟩-71,931 (-23.67%) ~ ~ p=0.000 n=12
Types 181,663 181,196 -467 (- 0.26%) ~ ~ p=0.000 n=12
Memory Used 215,199k (± 0.01%) 203,941k (± 0.02%) 🟩-11,257k (- 5.23%) 203,837k 204,032k p=0.000 n=12
Memory Allocs 1,400,628 (± 0.02%) 1,434,091 (± 0.02%) +33,462 (+ 2.39%) 1,433,479 1,434,531 p=0.000 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.097s (± 3.99%) 0.097s (± 4.36%) ~ 0.086s 0.107s p=0.876 n=12
Bind Time 0.041s (± 6.09%) 0.042s (±10.37%) ~ 0.031s 0.051s p=0.809 n=12
Check Time 0.735s (± 0.64%) 0.725s (± 1.02%) -0.010s (- 1.35%) 0.708s 0.744s p=0.046 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 0.887s (± 0.42%) 0.878s (± 0.69%) -0.009s (- 1.01%) 0.860s 0.894s p=0.014 n=12
vscode - native
Errors 10 10 ~ ~ ~ p=1.000 n=12
Symbols 13,104,161 7,020,833 🟩-6,083,328 (-46.42%) ~ ~ p=0.000 n=12
Types 4,280,901 4,158,404 -122,497 (- 2.86%) ~ ~ p=0.000 n=12
Memory Used 6,111,000k (± 0.01%) 5,286,957k (± 0.02%) 🟩-824,043k (-13.48%) 5,284,519k 5,290,030k p=0.000 n=12
Memory Allocs 62,100,762 (± 0.03%) 64,912,343 (± 0.02%) 🔻+2,811,581 (+ 4.53%) 64,898,296 64,966,430 p=0.000 n=12
Config Time 0.078s (± 0.31%) 0.078s (± 0.54%) ~ 0.077s 0.079s p=1.000 n=12
Parse Time 1.892s (± 2.54%) 1.928s (± 2.62%) ~ 1.842s 2.073s p=0.225 n=12
Bind Time 0.730s (±13.79%) 0.692s (±14.24%) ~ 0.540s 0.920s p=0.540 n=12
Check Time 15.942s (± 1.10%) 15.007s (± 1.08%) 🟩-0.935s (- 5.87%) 14.671s 15.263s p=0.000 n=12
Emit Time 5.744s (± 8.06%) 5.491s (± 9.77%) ~ 4.772s 6.726s p=0.478 n=12
Total Time 24.472s (± 1.45%) 23.279s (± 1.97%) 🟩-1.193s (- 4.88%) 22.514s 24.303s p=0.001 n=12
webpack - native
Errors 599 599 ~ ~ ~ p=1.000 n=12
Symbols 1,347,473 919,673 🟩-427,800 (-31.75%) ~ ~ p=0.000 n=12
Types 651,043 638,819 -12,224 (- 1.88%) ~ ~ p=0.000 n=12
Memory Used 858,302k (± 0.02%) 764,691k (± 0.02%) 🟩-93,611k (-10.91%) 764,286k 765,015k p=0.000 n=12
Memory Allocs 6,774,798 (± 0.02%) 6,823,622 (± 0.01%) +48,824 (+ 0.72%) 6,821,338 6,826,361 p=0.000 n=12
Config Time 0.007s (± 4.37%) 0.008s (± 4.38%) ~ 0.007s 0.008s p=1.000 n=12
Parse Time 0.244s (± 4.28%) 0.250s (± 4.08%) ~ 0.218s 0.268s p=0.291 n=12
Bind Time 0.068s (±15.15%) 0.062s (±14.65%) ~ 0.053s 0.094s p=0.145 n=12
Check Time 2.482s (± 0.55%) 2.466s (± 0.31%) ~ 2.436s 2.485s p=0.109 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 2.832s (± 0.50%) 2.816s (± 0.48%) ~ 2.782s 2.855s p=0.213 n=12
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,060,810 641,595 🟩-419,215 (-39.52%) ~ ~ p=0.000 n=12
Types 389,671 388,220 -1,451 (- 0.37%) ~ ~ p=0.000 n=12
Memory Used 471,821k (± 0.02%) 399,569k (± 0.03%) 🟩-72,253k (-15.31%) 399,412k 399,932k p=0.000 n=12
Memory Allocs 4,216,636 (± 0.07%) 4,177,948 (± 0.10%) -38,688 (- 0.92%) 4,168,689 4,185,545 p=0.000 n=12
Config Time 0.003s 0.003s ~ ~ ~ p=1.000 n=12
Parse Time 0.134s (± 1.94%) 0.131s (± 3.36%) ~ 0.120s 0.147s p=0.323 n=12
Bind Time 0.043s (±16.21%) 0.047s (±17.83%) ~ 0.033s 0.071s p=0.398 n=12
Check Time 1.079s (± 1.01%) 0.946s (± 0.41%) 🟩-0.133s (-12.35%) 0.939s 0.958s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 1.267s (± 1.01%) 1.135s (± 0.83%) 🟩-0.132s (-10.43%) 1.116s 1.158s p=0.000 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

func (t *StructuredType) getProperties() []*ast.Symbol {
if lazy := t.getLazyState(); lazy != nil && !lazy.propertiesResolved {
for i := range lazy.layout.memberInfos {
t.getPropertyAt(i)

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.

Are we paying a little bit of extra overhead for the initial checks of getPropertyAt? Maybe it would make sense to extract the part of getPropertyAt to getPropertyAtWorker that takes the *LazyState, the properties, and current index.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I think the effect is so minimal it isn't worth it.

Comment thread tsc/internal/checker/checker.go Outdated
if memberInfoMap == nil {
memberInfoMap = make(map[string]*MemberInfo)
}
memberInfoMap[symbol.Name()] = &MemberInfo{symbol: symbol, baseIndex: int32(baseIndex)}

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.

I think we can avoid the per-member allocations by collecting into a map[string]MemberInfo first, then allocating the records together:

storage := make([]MemberInfo, len(members))
memberInfoMap := make(map[string]*MemberInfo, len(members))
memberInfos := make([]*MemberInfo, len(members))
i := 0
for name, info := range members {
    storage[i] = info
    memberInfoMap[name] = &storage[i]
    memberInfos[i] = &storage[i]
    i++
}

Comment thread tsc/internal/checker/checker.go Outdated
}
}
}
memberInfos := slices.Collect(maps.Values(memberInfoMap))

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.

Preallocate the slice:

memberInfos := slices.AppendSeq(make([]*MemberInfo, 0, len(memberInfoMap)), maps.Values(memberInfoMap))

@typescript-automation

Copy link
Copy Markdown
Contributor

Anders Hejlsberg (@ahejlsberg) Here are the results of running the top 400 repos with tsc comparing baseline and pr:

Everything looks good!

@ahejlsberg

Copy link
Copy Markdown
Member Author

Latest commit uses layout properties to compute keyof T and discriminate contextual types. Should help defer more work.

@ahejlsberg

Copy link
Copy Markdown
Member Author

TypeScript Bot (@typescript-bot) test it

@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
test top400 ✅ Started ✅ Results
user test this ✅ Started ✅ Results
run dt ✅ Started ✅ Results
perf test this faster ✅ Started 👀 Results

@typescript-automation

Copy link
Copy Markdown
Contributor

Hey Anders Hejlsberg (@ahejlsberg), the results of running the DT tests are ready.

Everything looks the same!

You can check the log here.

@typescript-automation

Copy link
Copy Markdown
Contributor

Anders Hejlsberg (@ahejlsberg) Here are the results of running the user tests with tsc comparing baseline and pr:

Everything looks good!

@typescript-automation

Copy link
Copy Markdown
Contributor

Anders Hejlsberg (@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 - native
Errors 41 41 ~ ~ ~ p=1.000 n=12
Symbols 115,276 88,466 🟩-26,810 (-23.26%) ~ ~ p=0.000 n=12
Types 79,613 79,607 -6 (- 0.01%) ~ ~ p=0.000 n=12
Memory Used 113,489k (± 0.06%) 109,515k (± 0.07%) 🟩-3,973k (- 3.50%) 109,306k 109,670k p=0.000 n=12
Memory Allocs 2,212,272 (± 0.00%) 2,236,532 (± 0.01%) +24,260 (+ 1.10%) 2,236,253 2,236,962 p=0.000 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.039s (± 3.66%) 0.040s (± 4.22%) ~ 0.035s 0.044s p=0.196 n=12
Bind Time 0.014s (± 7.29%) 0.013s (±10.94%) ~ 0.011s 0.017s p=0.267 n=12
Check Time 0.466s (± 0.93%) 0.485s (± 0.72%) 🔻+0.019s (+ 4.02%) 0.477s 0.496s p=0.000 n=12
Emit Time 0.272s (± 1.94%) 0.266s (± 2.47%) ~ 0.253s 0.282s p=0.131 n=12
Total Time 0.798s (± 0.85%) 0.811s (± 0.91%) +0.013s (+ 1.65%) 0.794s 0.824s p=0.023 n=12
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=12
Symbols 846,528 (± 0.05%) 586,558 (± 0.02%) 🟩-259,970 (-30.71%) 586,189 586,786 p=0.000 n=12
Types 247,032 (± 0.00%) 241,724 (± 0.00%) -5,308 (- 2.15%) 241,721 241,734 p=0.000 n=12
Memory Used 596,250k (± 0.03%) 553,559k (± 0.02%) 🟩-42,691k (- 7.16%) 553,308k 553,838k p=0.000 n=12
Memory Allocs 13,137,249 (± 0.08%) 13,357,727 (± 0.02%) +220,478 (+ 1.68%) 13,354,162 13,372,362 p=0.000 n=12
Config Time 0.017s (± 1.45%) 0.017s (± 1.95%) ~ 0.016s 0.017s p=0.371 n=12
Parse Time 0.225s (± 3.64%) 0.223s (± 3.30%) ~ 0.211s 0.245s p=0.787 n=12
Bind Time 0.086s (±12.74%) 0.080s (±13.14%) ~ 0.058s 0.110s p=0.401 n=12
Check Time 0s 0s ~ ~ ~ p=1.000 n=12
Emit Time 1.553s (± 1.49%) 1.496s (± 1.49%) 🟩-0.056s (- 3.63%) 1.420s 1.546s p=0.000 n=12
Total Time 1.897s (± 1.44%) 1.835s (± 1.52%) 🟩-0.062s (- 3.28%) 1.748s 1.885s p=0.001 n=12
arktype - native
⚠️ Failed failed
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=12
Symbols 4,331,983 3,855,253 🟩-476,730 (-11.00%) ~ ~ p=0.000 n=12
Types 1,370,520 1,370,331 -189 (- 0.01%) ~ ~ p=0.000 n=12
Memory Used 2,624,959k (± 0.06%) 2,337,560k (± 0.05%) 🟩-287,399k (-10.95%) 2,335,644k 2,340,770k p=0.000 n=12
Memory Allocs 27,682,809 (± 0.08%) 29,769,174 (± 0.05%) 🔻+2,086,365 (+ 7.54%) 29,723,590 29,800,599 p=0.000 n=12
Config Time 0.017s (± 1.45%) 0.017s (± 1.45%) ~ 0.016s 0.017s p=1.000 n=12
Parse Time 0.479s (± 3.48%) 0.480s (± 2.25%) ~ 0.451s 0.512s p=0.966 n=12
Bind Time 0.002s (±24.21%) 0.002s ~ ~ ~ p=1.000 n=12
Check Time 7.162s (± 0.58%) 6.751s (± 0.49%) 🟩-0.410s (- 5.73%) 6.700s 6.859s p=0.000 n=12
Emit Time 0.503s (±12.75%) 0.460s (± 2.85%) ~ 0.416s 0.482s p=0.966 n=12
Total Time 8.899s (± 0.78%) 8.473s (± 0.37%) 🟩-0.426s (- 4.79%) 8.406s 8.561s p=0.000 n=12
sentry - native
Errors 2 2 ~ ~ ~ p=1.000 n=12
Symbols 7,459,653 4,793,345 🟩-2,666,308 (-35.74%) ~ ~ p=0.000 n=12
Types 2,647,172 2,607,067 -40,105 (- 1.52%) ~ ~ p=0.000 n=12
Memory Used 3,803,511k (± 0.03%) 3,218,376k (± 0.02%) 🟩-585,135k (-15.38%) 3,216,639k 3,220,485k p=0.000 n=12
Memory Allocs 77,125,633 (± 0.08%) 76,737,811 (± 0.06%) -387,822 (- 0.50%) 76,578,030 76,835,721 p=0.000 n=12
Config Time 0.060s (± 0.47%) 0.060s (± 0.54%) ~ 0.060s 0.061s p=0.400 n=12
Parse Time 1.030s (± 2.36%) 1.008s (± 1.75%) ~ 0.965s 1.053s p=0.128 n=12
Bind Time 0.307s (±11.98%) 0.334s (±13.30%) ~ 0.257s 0.466s p=0.524 n=12
Check Time 14.797s (± 0.59%) 13.915s (± 0.77%) 🟩-0.882s (- 5.96%) 13.710s 14.285s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 16.273s (± 0.54%) 15.396s (± 0.84%) 🟩-0.877s (- 5.39%) 15.153s 15.842s p=0.000 n=12
social-app - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 2,568,629 1,883,343 🟩-685,286 (-26.68%) ~ ~ p=0.000 n=12
Types 1,163,035 1,158,474 -4,561 (- 0.39%) ~ ~ p=0.000 n=12
Memory Used 1,212,747k (± 0.01%) 1,061,005k (± 0.02%) 🟩-151,742k (-12.51%) 1,060,653k 1,061,710k p=0.000 n=12
Memory Allocs 13,969,400 (± 0.14%) 14,045,251 (± 0.18%) +75,851 (+ 0.54%) 13,990,380 14,104,234 p=0.000 n=12
Config Time 0.017s (± 1.88%) 0.017s (± 1.86%) ~ 0.017s 0.018s p=1.000 n=12
Parse Time 0.354s (± 1.61%) 0.354s (± 1.35%) ~ 0.339s 0.367s p=0.787 n=12
Bind Time 0.076s (± 3.63%) 0.080s (± 7.37%) ~ 0.072s 0.099s p=0.321 n=12
Check Time 3.620s (± 0.34%) 3.324s (± 0.72%) 🟩-0.296s (- 8.17%) 3.252s 3.363s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 4.091s (± 0.34%) 3.802s (± 0.39%) 🟩-0.290s (- 7.08%) 3.769s 3.830s p=0.000 n=12
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,388,680 1,184,988 🟩-203,692 (-14.67%) ~ ~ p=0.000 n=12
Types 441,862 438,967 -2,895 (- 0.66%) ~ ~ p=0.000 n=12
Memory Used 1,311,804k (± 0.63%) 1,276,833k (± 0.61%) -34,971k (- 2.67%) 1,263,495k 1,304,350k p=0.000 n=12
Memory Allocs 78,060,060 (± 0.12%) 79,118,484 (± 0.15%) +1,058,424 (+ 1.36%) 78,533,781 79,265,787 p=0.000 n=12
Config Time 0.004s (±12.22%) 0.004s (± 9.45%) ~ 0.003s 0.005s p=0.460 n=12
Parse Time 0.303s (± 1.78%) 0.304s (± 2.48%) ~ 0.279s 0.319s p=0.876 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 2.002s (± 0.52%) 1.963s (± 0.31%) -0.039s (- 1.97%) 1.942s 1.977s p=0.000 n=12
Emit Time 0.346s (± 2.92%) 0.367s (± 5.56%) 🔻+0.021s (+ 6.07%) 0.302s 0.417s p=0.040 n=12
Total Time 23.715s (± 0.74%) 23.510s (± 0.79%) ~ 23.082s 24.055s p=0.078 n=12
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 334,953 263,525 🟩-71,428 (-21.32%) ~ ~ p=0.000 n=12
Types 197,616 196,118 -1,498 (- 0.76%) ~ ~ p=0.000 n=12
Memory Used 247,454k (± 0.02%) 236,400k (± 0.03%) 🟩-11,054k (- 4.47%) 236,259k 236,539k p=0.000 n=12
Memory Allocs 4,326,078 (± 0.01%) 4,354,568 (± 0.01%) +28,490 (+ 0.66%) 4,352,762 4,355,312 p=0.000 n=12
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=12
Parse Time 0.113s (± 4.08%) 0.112s (± 5.00%) ~ 0.101s 0.127s p=0.765 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 0.953s (± 0.54%) 0.952s (± 0.82%) ~ 0.938s 0.975s p=0.468 n=12
Emit Time 0.154s (± 3.55%) 0.149s (± 4.09%) ~ 0.131s 0.157s p=0.173 n=12
Total Time 1.277s (± 0.69%) 1.273s (± 0.72%) ~ 1.251s 1.295s p=0.579 n=12
t3code-server - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 11,588,087 4,350,705 🟩-7,237,382 (-62.46%) ~ ~ p=0.000 n=12
Types 3,062,556 3,040,691 -21,865 (- 0.71%) ~ ~ p=0.000 n=12
Memory Used 3,946,588k (± 0.03%) 2,616,072k (± 0.02%) 🟩-1,330,516k (-33.71%) 2,614,709k 2,617,667k p=0.000 n=12
Memory Allocs 41,546,547 (± 0.03%) 38,733,455 (± 0.04%) 🟩-2,813,092 (- 6.77%) 38,683,313 38,775,118 p=0.000 n=12
Config Time 0.006s 0.006s ~ ~ ~ p=1.000 n=12
Parse Time 0.558s (± 2.99%) 0.577s (± 3.03%) ~ 0.514s 0.609s p=0.124 n=12
Bind Time 0.199s (±16.57%) 0.168s (±13.84%) ~ 0.145s 0.269s p=0.103 n=12
Check Time 18.600s (± 0.40%) 16.625s (± 0.23%) 🟩-1.975s (-10.62%) 16.527s 16.750s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 19.380s (± 0.37%) 17.390s (± 0.20%) 🟩-1.990s (-10.27%) 17.300s 17.516s p=0.000 n=12
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=12
Symbols 303,834 231,636 🟩-72,198 (-23.76%) ~ ~ p=0.000 n=12
Types 181,663 181,196 -467 (- 0.26%) ~ ~ p=0.000 n=12
Memory Used 215,195k (± 0.01%) 203,888k (± 0.02%) 🟩-11,307k (- 5.25%) 203,733k 204,003k p=0.000 n=12
Memory Allocs 1,400,866 (± 0.01%) 1,432,703 (± 0.01%) +31,838 (+ 2.27%) 1,432,228 1,433,228 p=0.000 n=12
Config Time 0.000s 0.000s (±217.90%) ~ 0.000s 0.001s p=1.000 n=12
Parse Time 0.096s (± 4.44%) 0.099s (± 4.34%) ~ 0.090s 0.111s p=0.369 n=12
Bind Time 0.041s (± 7.24%) 0.039s (± 8.46%) ~ 0.031s 0.049s p=0.618 n=12
Check Time 0.737s (± 0.95%) 0.731s (± 1.08%) ~ 0.718s 0.761s p=0.155 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 0.889s (± 0.93%) 0.885s (± 1.15%) ~ 0.867s 0.925s p=0.272 n=12
vscode - native
Errors 10 10 ~ ~ ~ p=1.000 n=12
Symbols 13,327,039 7,156,917 🟩-6,170,122 (-46.30%) ~ ~ p=0.000 n=12
Types 4,345,829 4,223,274 -122,555 (- 2.82%) ~ ~ p=0.000 n=12
Memory Used 6,200,178k (± 0.01%) 5,365,822k (± 0.04%) 🟩-834,356k (-13.46%) 5,362,743k 5,376,224k p=0.000 n=12
Memory Allocs 63,163,192 (± 0.02%) 66,116,322 (± 0.03%) 🔻+2,953,131 (+ 4.68%) 66,096,018 66,207,442 p=0.000 n=12
Config Time 0.078s (± 0.36%) 0.078s (± 0.36%) ~ 0.078s 0.079s p=1.000 n=12
Parse Time 1.896s (± 1.82%) 1.963s (± 2.03%) +0.067s (+ 3.54%) 1.858s 2.072s p=0.010 n=12
Bind Time 0.809s (±14.10%) 0.652s (±10.62%) 🟩-0.157s (-19.44%) 0.549s 0.836s p=0.016 n=12
Check Time 16.509s (± 1.19%) 15.611s (± 0.64%) 🟩-0.898s (- 5.44%) 15.301s 15.766s p=0.000 n=12
Emit Time 5.942s (± 6.50%) 5.364s (± 8.11%) 🟩-0.578s (- 9.73%) 4.909s 6.806s p=0.039 n=12
Total Time 25.319s (± 1.17%) 23.751s (± 1.65%) 🟩-1.567s (- 6.19%) 23.346s 25.061s p=0.000 n=12
webpack - native
Errors 602 602 ~ ~ ~ p=1.000 n=12
Symbols 1,345,638 913,857 🟩-431,781 (-32.09%) ~ ~ p=0.000 n=12
Types 648,272 635,613 -12,659 (- 1.95%) ~ ~ p=0.000 n=12
Memory Used 856,855k (± 0.02%) 764,096k (± 0.02%) 🟩-92,759k (-10.83%) 763,692k 764,531k p=0.000 n=12
Memory Allocs 6,777,526 (± 0.02%) 6,816,983 (± 0.07%) +39,457 (+ 0.58%) 6,811,637 6,834,887 p=0.000 n=12
Config Time 0.009s 0.009s ~ ~ ~ p=1.000 n=12
Parse Time 0.311s (± 3.17%) 0.313s (± 2.86%) ~ 0.288s 0.340s p=0.854 n=12
Bind Time 0.074s (± 2.53%) 0.082s (±13.76%) ~ 0.070s 0.126s p=0.675 n=12
Check Time 2.899s (± 0.39%) 2.933s (± 0.35%) +0.034s (+ 1.19%) 2.912s 2.971s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 3.331s (± 0.43%) 3.377s (± 0.50%) +0.046s (+ 1.38%) 3.338s 3.431s p=0.000 n=12
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,060,810 640,566 🟩-420,244 (-39.62%) ~ ~ p=0.000 n=12
Types 389,671 388,220 -1,451 (- 0.37%) ~ ~ p=0.000 n=12
Memory Used 471,653k (± 0.02%) 400,005k (± 0.05%) 🟩-71,648k (-15.19%) 399,729k 400,562k p=0.000 n=12
Memory Allocs 4,217,985 (± 0.10%) 4,187,072 (± 0.09%) -30,913 (- 0.73%) 4,178,237 4,194,918 p=0.000 n=12
Config Time 0.002s 0.002s ~ ~ ~ p=1.000 n=12
Parse Time 0.105s (± 3.55%) 0.106s (± 2.91%) ~ 0.098s 0.113s p=0.701 n=12
Bind Time 0.034s (±15.39%) 0.037s (±17.31%) ~ 0.026s 0.053s p=0.618 n=12
Check Time 0.906s (± 1.02%) 0.794s (± 0.49%) 🟩-0.112s (-12.35%) 0.784s 0.805s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 1.054s (± 0.97%) 0.944s (± 0.83%) 🟩-0.110s (-10.44%) 0.925s 0.967s p=0.000 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

@ahejlsberg

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

@ahejlsberg

Copy link
Copy Markdown
Member Author

Ok, I think this one is good to go now.

@typescript-automation

Copy link
Copy Markdown
Contributor

Anders Hejlsberg (@ahejlsberg) Here are the results of running the top 400 repos with tsc comparing baseline and pr:

Everything looks good!

@typescript-automation

Copy link
Copy Markdown
Contributor

Anders Hejlsberg (@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 - native
Errors 41 41 ~ ~ ~ p=1.000 n=12
Symbols 115,276 88,466 🟩-26,810 (-23.26%) ~ ~ p=0.000 n=12
Types 79,613 79,607 -6 (- 0.01%) ~ ~ p=0.000 n=12
Memory Used 113,501k (± 0.08%) 109,188k (± 0.09%) 🟩-4,313k (- 3.80%) 108,996k 109,466k p=0.000 n=12
Memory Allocs 2,212,265 (± 0.01%) 2,200,606 (± 0.00%) -11,659 (- 0.53%) 2,200,367 2,200,940 p=0.000 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.039s (± 4.16%) 0.039s (± 2.43%) ~ 0.037s 0.043s p=0.895 n=12
Bind Time 0.015s (± 9.56%) 0.013s (± 9.52%) ~ 0.011s 0.017s p=0.124 n=12
Check Time 0.463s (± 0.94%) 0.476s (± 0.63%) +0.012s (+ 2.68%) 0.469s 0.484s p=0.000 n=12
Emit Time 0.268s (± 1.86%) 0.268s (± 2.09%) ~ 0.259s 0.289s p=0.744 n=12
Total Time 0.792s (± 0.70%) 0.803s (± 0.82%) +0.011s (+ 1.39%) 0.789s 0.820s p=0.014 n=12
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=12
Symbols 846,833 (± 0.08%) 586,594 (± 0.01%) 🟩-260,239 (-30.73%) 586,297 586,715 p=0.000 n=12
Types 247,031 (± 0.00%) 241,723 (± 0.00%) -5,308 (- 2.15%) 241,719 241,733 p=0.000 n=12
Memory Used 596,270k (± 0.03%) 551,317k (± 0.01%) 🟩-44,953k (- 7.54%) 551,135k 551,505k p=0.000 n=12
Memory Allocs 13,140,295 (± 0.13%) 13,104,077 (± 0.01%) -36,218 (- 0.28%) 13,101,678 13,107,947 p=0.000 n=12
Config Time 0.017s (± 1.07%) 0.017s (± 1.86%) ~ 0.016s 0.017s p=0.317 n=12
Parse Time 0.226s (± 2.24%) 0.223s (± 2.47%) ~ 0.211s 0.236s p=0.503 n=12
Bind Time 0.081s (±12.39%) 0.081s (±14.59%) ~ 0.058s 0.108s p=0.966 n=12
Check Time 0s 0s ~ ~ ~ p=1.000 n=12
Emit Time 1.558s (± 1.73%) 1.514s (± 1.05%) -0.044s (- 2.83%) 1.468s 1.549s p=0.008 n=12
Total Time 1.904s (± 1.62%) 1.854s (± 0.96%) -0.050s (- 2.63%) 1.789s 1.890s p=0.006 n=12
arktype - native
⚠️ Failed failed
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=12
Symbols 4,331,983 3,855,253 🟩-476,730 (-11.00%) ~ ~ p=0.000 n=12
Types 1,370,520 1,370,331 -189 (- 0.01%) ~ ~ p=0.000 n=12
Memory Used 2,625,549k (± 0.04%) 2,308,959k (± 0.06%) 🟩-316,590k (-12.06%) 2,305,268k 2,312,529k p=0.000 n=12
Memory Allocs 27,685,207 (± 0.06%) 27,254,768 (± 0.06%) -430,439 (- 1.55%) 27,208,992 27,292,300 p=0.000 n=12
Config Time 0.017s (± 1.70%) 0.017s (± 1.86%) ~ 0.016s 0.017s p=1.000 n=12
Parse Time 0.475s (± 1.59%) 0.471s (± 3.20%) ~ 0.427s 0.499s p=1.000 n=12
Bind Time 0.002s 0.002s ~ ~ ~ p=1.000 n=12
Check Time 7.149s (± 0.41%) 6.600s (± 0.69%) 🟩-0.549s (- 7.68%) 6.541s 6.724s p=0.000 n=12
Emit Time 0.572s (±10.01%) 0.455s (± 2.84%) 🟩-0.117s (-20.41%) 0.419s 0.467s p=0.002 n=12
Total Time 8.948s (± 0.80%) 8.290s (± 0.25%) 🟩-0.658s (- 7.35%) 8.236s 8.356s p=0.000 n=12
sentry - native
Errors 2 2 ~ ~ ~ p=1.000 n=12
Symbols 7,459,653 4,793,345 🟩-2,666,308 (-35.74%) ~ ~ p=0.000 n=12
Types 2,647,172 2,607,067 -40,105 (- 1.52%) ~ ~ p=0.000 n=12
Memory Used 3,802,495k (± 0.02%) 3,206,563k (± 0.04%) 🟩-595,932k (-15.67%) 3,203,622k 3,211,688k p=0.000 n=12
Memory Allocs 77,176,892 (± 0.09%) 75,439,031 (± 0.11%) -1,737,862 (- 2.25%) 75,254,988 75,623,787 p=0.000 n=12
Config Time 0.060s (± 0.54%) 0.060s (± 0.47%) ~ 0.060s 0.061s p=0.400 n=12
Parse Time 1.005s (± 2.01%) 1.041s (± 3.91%) ~ 0.951s 1.175s p=0.173 n=12
Bind Time 0.327s (±12.71%) 0.321s (±15.72%) ~ 0.264s 0.457s p=0.932 n=12
Check Time 14.815s (± 0.82%) 13.827s (± 0.53%) 🟩-0.988s (- 6.67%) 13.568s 14.034s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 16.287s (± 0.70%) 15.319s (± 0.59%) 🟩-0.968s (- 5.95%) 15.033s 15.590s p=0.000 n=12
social-app - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 2,568,629 1,883,343 🟩-685,286 (-26.68%) ~ ~ p=0.000 n=12
Types 1,163,035 1,158,474 -4,561 (- 0.39%) ~ ~ p=0.000 n=12
Memory Used 1,212,761k (± 0.01%) 1,057,633k (± 0.01%) 🟩-155,128k (-12.79%) 1,057,342k 1,058,285k p=0.000 n=12
Memory Allocs 14,010,141 (± 0.29%) 13,640,082 (± 0.14%) -370,059 (- 2.64%) 13,605,549 13,714,522 p=0.000 n=12
Config Time 0.017s 0.017s (± 1.06%) ~ 0.017s 0.018s p=1.000 n=12
Parse Time 0.355s (± 2.35%) 0.348s (± 1.56%) ~ 0.335s 0.362s p=0.097 n=12
Bind Time 0.079s (±11.85%) 0.083s (± 7.46%) ~ 0.072s 0.102s p=0.153 n=12
Check Time 3.585s (± 0.44%) 3.262s (± 0.75%) 🟩-0.323s (- 9.00%) 3.203s 3.312s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 4.057s (± 0.52%) 3.738s (± 0.45%) 🟩-0.320s (- 7.88%) 3.698s 3.771s p=0.000 n=12
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,388,680 1,184,988 🟩-203,692 (-14.67%) ~ ~ p=0.000 n=12
Types 441,862 438,967 -2,895 (- 0.66%) ~ ~ p=0.000 n=12
Memory Used 1,308,038k (± 0.48%) 1,270,178k (± 0.44%) -37,860k (- 2.89%) 1,258,937k 1,290,955k p=0.000 n=12
Memory Allocs 78,082,727 (± 0.13%) 77,632,977 (± 0.05%) -449,750 (- 0.58%) 77,544,906 77,797,857 p=0.000 n=12
Config Time 0.004s (±10.30%) 0.004s (±12.88%) ~ 0.003s 0.006s p=0.522 n=12
Parse Time 0.307s (± 1.86%) 0.310s (± 2.48%) ~ 0.285s 0.332s p=0.401 n=12
Bind Time 0.000s (±217.90%) 0.000s ~ ~ ~ p=1.000 n=12
Check Time 2.009s (± 0.53%) 1.945s (± 0.69%) 🟩-0.064s (- 3.20%) 1.916s 1.989s p=0.000 n=12
Emit Time 0.346s (± 3.20%) 0.382s (± 2.46%) 🔻+0.035s (+10.23%) 0.359s 0.415s p=0.000 n=12
Total Time 23.787s (± 0.37%) 23.625s (± 0.74%) -0.162s (- 0.68%) 23.180s 24.299s p=0.028 n=12
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 334,953 263,525 🟩-71,428 (-21.32%) ~ ~ p=0.000 n=12
Types 197,616 196,118 -1,498 (- 0.76%) ~ ~ p=0.000 n=12
Memory Used 247,402k (± 0.02%) 236,018k (± 0.03%) 🟩-11,384k (- 4.60%) 235,840k 236,254k p=0.000 n=12
Memory Allocs 4,326,078 (± 0.01%) 4,296,096 (± 0.01%) -29,982 (- 0.69%) 4,294,930 4,297,392 p=0.000 n=12
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=12
Parse Time 0.113s (± 3.86%) 0.115s (± 4.97%) ~ 0.103s 0.127s p=0.876 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 0.959s (± 0.65%) 0.946s (± 0.68%) -0.013s (- 1.33%) 0.931s 0.963s p=0.006 n=12
Emit Time 0.155s (± 5.98%) 0.139s (± 5.22%) 🟩-0.016s (-10.29%) 0.121s 0.159s p=0.010 n=12
Total Time 1.283s (± 0.91%) 1.251s (± 0.58%) -0.032s (- 2.48%) 1.232s 1.267s p=0.000 n=12
t3code-server - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 11,588,087 4,350,705 🟩-7,237,382 (-62.46%) ~ ~ p=0.000 n=12
Types 3,062,556 3,040,691 -21,865 (- 0.71%) ~ ~ p=0.000 n=12
Memory Used 3,945,835k (± 0.01%) 2,610,751k (± 0.04%) 🟩-1,335,084k (-33.84%) 2,608,424k 2,613,883k p=0.000 n=12
Memory Allocs 41,532,386 (± 0.04%) 38,079,218 (± 0.07%) 🟩-3,453,168 (- 8.31%) 37,994,990 38,151,300 p=0.000 n=12
Config Time 0.006s 0.006s ~ ~ ~ p=1.000 n=12
Parse Time 0.562s (± 2.70%) 0.571s (± 2.10%) ~ 0.539s 0.610s p=0.434 n=12
Bind Time 0.180s (±13.46%) 0.174s (±10.27%) ~ 0.151s 0.232s p=0.944 n=12
Check Time 18.686s (± 0.54%) 16.443s (± 0.45%) 🟩-2.242s (-12.00%) 16.308s 16.749s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 19.449s (± 0.50%) 17.212s (± 0.46%) 🟩-2.237s (-11.50%) 17.099s 17.533s p=0.000 n=12
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=12
Symbols 303,834 231,636 🟩-72,198 (-23.76%) ~ ~ p=0.000 n=12
Types 181,663 181,196 -467 (- 0.26%) ~ ~ p=0.000 n=12
Memory Used 215,211k (± 0.02%) 203,549k (± 0.02%) 🟩-11,662k (- 5.42%) 203,394k 203,701k p=0.000 n=12
Memory Allocs 1,400,881 (± 0.02%) 1,370,207 (± 0.02%) -30,674 (- 2.19%) 1,369,520 1,370,923 p=0.000 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.095s (± 4.14%) 0.097s (± 3.69%) ~ 0.086s 0.104s p=0.257 n=12
Bind Time 0.038s (± 9.37%) 0.044s (± 9.28%) 🔻+0.006s (+14.78%) 0.030s 0.052s p=0.039 n=12
Check Time 0.743s (± 0.60%) 0.719s (± 0.81%) 🟩-0.024s (- 3.23%) 0.709s 0.735s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 0.891s (± 0.54%) 0.875s (± 0.60%) -0.016s (- 1.83%) 0.859s 0.886s p=0.000 n=12
vscode - native
Errors 10 10 ~ ~ ~ p=1.000 n=12
Symbols 13,340,950 7,161,150 🟩-6,179,800 (-46.32%) ~ ~ p=0.000 n=12
Types 4,349,809 4,227,095 -122,714 (- 2.82%) ~ ~ p=0.000 n=12
Memory Used 6,204,180k (± 0.01%) 5,336,630k (± 0.01%) 🟩-867,550k (-13.98%) 5,334,804k 5,337,921k p=0.000 n=12
Memory Allocs 63,188,295 (± 0.02%) 62,305,363 (± 0.01%) -882,932 (- 1.40%) 62,297,383 62,320,147 p=0.000 n=12
Config Time 0.078s (± 0.46%) 0.078s ~ ~ ~ p=0.217 n=12
Parse Time 1.919s (± 2.15%) 1.919s (± 2.32%) ~ 1.821s 2.027s p=0.898 n=12
Bind Time 0.770s (±13.57%) 0.757s (±15.48%) ~ 0.565s 0.989s p=0.875 n=12
Check Time 16.619s (± 1.24%) 15.462s (± 0.67%) 🟩-1.157s (- 6.96%) 15.234s 15.616s p=0.000 n=12
Emit Time 5.691s (± 5.42%) 5.700s (± 9.90%) ~ 4.880s 6.769s p=0.887 n=12
Total Time 25.162s (± 0.95%) 23.997s (± 2.24%) 🟩-1.165s (- 4.63%) 23.203s 25.011s p=0.000 n=12
webpack - native
Errors 602 602 ~ ~ ~ p=1.000 n=12
Symbols 1,351,584 916,063 🟩-435,521 (-32.22%) ~ ~ p=0.000 n=12
Types 650,086 637,341 -12,745 (- 1.96%) ~ ~ p=0.000 n=12
Memory Used 860,638k (± 0.02%) 764,582k (± 0.02%) 🟩-96,055k (-11.16%) 764,267k 764,959k p=0.000 n=12
Memory Allocs 6,792,554 (± 0.02%) 6,559,033 (± 0.02%) 🟩-233,521 (- 3.44%) 6,555,765 6,563,173 p=0.000 n=12
Config Time 0.009s 0.009s ~ ~ ~ p=1.000 n=12
Parse Time 0.308s (± 2.68%) 0.320s (± 2.51%) +0.012s (+ 3.78%) 0.289s 0.338s p=0.027 n=12
Bind Time 0.085s (±11.72%) 0.077s (± 8.37%) 🟩-0.009s (-10.05%) 0.070s 0.104s p=0.046 n=12
Check Time 2.914s (± 0.43%) 2.894s (± 0.19%) -0.020s (- 0.69%) 2.881s 2.909s p=0.009 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 3.358s (± 0.46%) 3.338s (± 0.29%) -0.020s (- 0.59%) 3.306s 3.363s p=0.015 n=12
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,060,810 640,566 🟩-420,244 (-39.62%) ~ ~ p=0.000 n=12
Types 389,671 388,220 -1,451 (- 0.37%) ~ ~ p=0.000 n=12
Memory Used 471,638k (± 0.01%) 398,533k (± 0.02%) 🟩-73,104k (-15.50%) 398,437k 398,781k p=0.000 n=12
Memory Allocs 4,216,301 (± 0.09%) 4,033,229 (± 0.05%) 🟩-183,073 (- 4.34%) 4,028,875 4,039,246 p=0.000 n=12
Config Time 0.002s 0.002s ~ ~ ~ p=1.000 n=12
Parse Time 0.107s (± 2.00%) 0.107s (± 2.72%) ~ 0.097s 0.113s p=0.876 n=12
Bind Time 0.032s (±15.60%) 0.031s (±13.84%) ~ 0.026s 0.047s p=0.804 n=12
Check Time 0.907s (± 1.06%) 0.790s (± 0.53%) 🟩-0.117s (-12.94%) 0.779s 0.799s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 1.055s (± 0.89%) 0.937s (± 0.84%) 🟩-0.117s (-11.13%) 0.924s 0.959s p=0.000 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

@ahejlsberg

Copy link
Copy Markdown
Member Author

TypeScript Bot (@typescript-bot) test it

@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
test top400 ✅ Started ✅ Results
user test this ✅ Started ✅ Results
run dt ✅ Started ✅ Results
perf test this faster ✅ Started 👀 Results

@typescript-automation

Copy link
Copy Markdown
Contributor

Hey Anders Hejlsberg (@ahejlsberg), the results of running the DT tests are ready.

Everything looks the same!

You can check the log here.

@typescript-automation

Copy link
Copy Markdown
Contributor

Anders Hejlsberg (@ahejlsberg) Here are the results of running the user tests with tsc comparing baseline and pr:

Everything looks good!

@typescript-automation

Copy link
Copy Markdown
Contributor

Anders Hejlsberg (@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 - native
Errors 41 41 ~ ~ ~ p=1.000 n=12
Symbols 115,276 88,466 🟩-26,810 (-23.26%) ~ ~ p=0.000 n=12
Types 79,613 79,607 -6 (- 0.01%) ~ ~ p=0.000 n=12
Memory Used 113,502k (± 0.07%) 109,186k (± 0.06%) 🟩-4,317k (- 3.80%) 109,066k 109,368k p=0.000 n=12
Memory Allocs 2,212,216 (± 0.00%) 2,196,655 (± 0.01%) -15,561 (- 0.70%) 2,196,269 2,197,046 p=0.000 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.039s (± 2.67%) 0.040s (± 3.07%) ~ 0.038s 0.045s p=0.736 n=12
Bind Time 0.015s (± 8.52%) 0.014s (±11.40%) ~ 0.011s 0.017s p=0.270 n=12
Check Time 0.462s (± 0.74%) 0.477s (± 0.64%) +0.014s (+ 3.06%) 0.469s 0.487s p=0.000 n=12
Emit Time 0.273s (± 1.98%) 0.265s (± 2.26%) 🟩-0.009s (- 3.17%) 0.254s 0.282s p=0.023 n=12
Total Time 0.797s (± 0.80%) 0.802s (± 0.74%) ~ 0.786s 0.816s p=0.283 n=12
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=12
Symbols 846,501 (± 0.07%) 586,678 (± 0.02%) 🟩-259,824 (-30.69%) 586,477 586,923 p=0.000 n=12
Types 247,033 (± 0.00%) 241,723 (± 0.00%) -5,310 (- 2.15%) 241,720 241,725 p=0.000 n=12
Memory Used 596,299k (± 0.02%) 551,264k (± 0.04%) 🟩-45,035k (- 7.55%) 550,689k 551,877k p=0.000 n=12
Memory Allocs 13,132,450 (± 0.07%) 13,074,337 (± 0.05%) -58,113 (- 0.44%) 13,067,265 13,104,511 p=0.000 n=12
Config Time 0.017s (± 1.70%) 0.017s (± 1.45%) ~ 0.016s 0.017s p=1.000 n=12
Parse Time 0.222s (± 2.69%) 0.221s (± 2.78%) ~ 0.209s 0.240s p=0.723 n=12
Bind Time 0.081s (±14.29%) 0.082s (±11.16%) ~ 0.057s 0.105s p=0.965 n=12
Check Time 0s 0s ~ ~ ~ p=1.000 n=12
Emit Time 1.565s (± 1.32%) 1.512s (± 1.72%) 🟩-0.053s (- 3.37%) 1.423s 1.559s p=0.001 n=12
Total Time 1.904s (± 1.26%) 1.854s (± 1.70%) -0.051s (- 2.66%) 1.744s 1.898s p=0.004 n=12
arktype - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,757,463 685,943 🟩-1,071,520 (-60.97%) ~ ~ p=0.000 n=12
Types 943,966 939,496 -4,470 (- 0.47%) ~ ~ p=0.000 n=12
Memory Used 703,552k (± 0.01%) 533,252k (± 0.02%) 🟩-170,300k (-24.21%) 532,943k 533,443k p=0.000 n=12
Memory Allocs 13,290,032 (± 0.01%) 12,770,730 (± 0.01%) 🟩-519,301 (- 3.91%) 12,767,990 12,777,149 p=0.000 n=12
Config Time 0.002s 0.002s ~ ~ ~ p=1.000 n=12
Parse Time 0.072s (± 3.76%) 0.071s (± 4.00%) ~ 0.062s 0.078s p=0.830 n=12
Bind Time 0.021s (±13.10%) 0.022s (±15.62%) ~ 0.018s 0.034s p=0.926 n=12
Check Time 2.047s (± 0.40%) 1.819s (± 0.75%) 🟩-0.228s (-11.12%) 1.787s 1.854s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 2.187s (± 0.32%) 1.966s (± 0.45%) 🟩-0.220s (-10.07%) 1.949s 1.988s p=0.000 n=12
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=12
Symbols 4,331,983 3,855,253 🟩-476,730 (-11.00%) ~ ~ p=0.000 n=12
Types 1,370,520 1,370,331 -189 (- 0.01%) ~ ~ p=0.000 n=12
Memory Used 2,625,002k (± 0.04%) 2,308,909k (± 0.06%) 🟩-316,093k (-12.04%) 2,306,528k 2,313,920k p=0.000 n=12
Memory Allocs 27,694,307 (± 0.05%) 27,146,001 (± 0.10%) -548,307 (- 1.98%) 27,086,025 27,232,920 p=0.000 n=12
Config Time 0.017s (± 1.07%) 0.017s (± 1.99%) ~ 0.016s 0.017s p=0.069 n=12
Parse Time 0.470s (± 3.63%) 0.474s (± 2.83%) ~ 0.450s 0.521s p=0.590 n=12
Bind Time 0.002s 0.002s ~ ~ ~ p=1.000 n=12
Check Time 7.151s (± 0.54%) 6.607s (± 0.59%) 🟩-0.544s (- 7.61%) 6.552s 6.725s p=0.000 n=12
Emit Time 0.525s (±13.24%) 0.453s (± 2.93%) ~ 0.417s 0.466s p=0.398 n=12
Total Time 8.901s (± 0.84%) 8.289s (± 0.38%) 🟩-0.612s (- 6.87%) 8.192s 8.377s p=0.000 n=12
sentry - native
Errors 2 2 ~ ~ ~ p=1.000 n=12
Symbols 7,459,653 4,793,345 🟩-2,666,308 (-35.74%) ~ ~ p=0.000 n=12
Types 2,647,172 2,607,067 -40,105 (- 1.52%) ~ ~ p=0.000 n=12
Memory Used 3,803,435k (± 0.04%) 3,205,717k (± 0.02%) 🟩-597,719k (-15.72%) 3,203,101k 3,208,087k p=0.000 n=12
Memory Allocs 77,185,600 (± 0.08%) 75,303,734 (± 0.07%) -1,881,866 (- 2.44%) 75,187,879 75,433,566 p=0.000 n=12
Config Time 0.060s (± 0.54%) 0.060s (± 0.54%) ~ 0.060s 0.061s p=1.000 n=12
Parse Time 1.000s (± 2.49%) 1.005s (± 2.32%) ~ 0.945s 1.074s p=0.562 n=12
Bind Time 0.371s (±13.70%) 0.327s (±14.58%) ~ 0.264s 0.446s p=0.272 n=12
Check Time 14.715s (± 0.42%) 13.778s (± 0.56%) 🟩-0.937s (- 6.37%) 13.581s 14.042s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 16.219s (± 0.40%) 15.246s (± 0.57%) 🟩-0.973s (- 6.00%) 15.031s 15.570s p=0.000 n=12
social-app - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 2,568,629 1,883,343 🟩-685,286 (-26.68%) ~ ~ p=0.000 n=12
Types 1,163,035 1,158,474 -4,561 (- 0.39%) ~ ~ p=0.000 n=12
Memory Used 1,212,930k (± 0.02%) 1,057,642k (± 0.01%) 🟩-155,288k (-12.80%) 1,057,260k 1,057,988k p=0.000 n=12
Memory Allocs 13,992,315 (± 0.09%) 13,570,437 (± 0.11%) 🟩-421,878 (- 3.02%) 13,529,908 13,623,162 p=0.000 n=12
Config Time 0.017s (± 1.79%) 0.017s (± 1.65%) ~ 0.017s 0.018s p=1.000 n=12
Parse Time 0.354s (± 2.63%) 0.350s (± 1.63%) ~ 0.331s 0.359s p=0.701 n=12
Bind Time 0.083s (± 7.84%) 0.086s (±15.02%) ~ 0.072s 0.133s p=0.638 n=12
Check Time 3.611s (± 0.42%) 3.298s (± 0.78%) 🟩-0.313s (- 8.67%) 3.219s 3.342s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 4.092s (± 0.51%) 3.775s (± 0.44%) 🟩-0.317s (- 7.75%) 3.724s 3.806s p=0.000 n=12
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,388,680 1,184,988 🟩-203,692 (-14.67%) ~ ~ p=0.000 n=12
Types 441,862 438,967 -2,895 (- 0.66%) ~ ~ p=0.000 n=12
Memory Used 1,319,963k (± 0.65%) 1,272,465k (± 0.66%) 🟩-47,497k (- 3.60%) 1,245,027k 1,300,911k p=0.000 n=12
Memory Allocs 78,119,177 (± 0.08%) 77,410,155 (± 0.10%) -709,021 (- 0.91%) 77,050,276 77,553,694 p=0.000 n=12
Config Time 0.004s (±14.19%) 0.004s (± 7.33%) ~ 0.004s 0.005s p=0.720 n=12
Parse Time 0.303s (± 2.16%) 0.308s (± 2.09%) ~ 0.286s 0.319s p=0.259 n=12
Bind Time 0.000s 0.000s (±217.90%) ~ 0.000s 0.004s p=1.000 n=12
Check Time 1.991s (± 0.37%) 1.939s (± 0.70%) -0.052s (- 2.60%) 1.906s 1.984s p=0.000 n=12
Emit Time 0.361s (± 4.82%) 0.369s (± 3.82%) ~ 0.340s 0.418s p=0.560 n=12
Total Time 23.644s (± 0.71%) 23.400s (± 0.49%) -0.244s (- 1.03%) 23.127s 23.722s p=0.024 n=12
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 334,953 263,525 🟩-71,428 (-21.32%) ~ ~ p=0.000 n=12
Types 197,616 196,118 -1,498 (- 0.76%) ~ ~ p=0.000 n=12
Memory Used 247,464k (± 0.02%) 236,037k (± 0.03%) 🟩-11,426k (- 4.62%) 235,827k 236,170k p=0.000 n=12
Memory Allocs 4,325,853 (± 0.01%) 4,287,340 (± 0.01%) -38,514 (- 0.89%) 4,285,979 4,288,533 p=0.000 n=12
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=12
Parse Time 0.115s (± 3.63%) 0.112s (± 5.81%) ~ 0.098s 0.127s p=0.540 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 0.961s (± 0.58%) 0.944s (± 0.57%) -0.018s (- 1.85%) 0.934s 0.963s p=0.000 n=12
Emit Time 0.150s (± 3.75%) 0.146s (± 5.13%) ~ 0.129s 0.164s p=0.434 n=12
Total Time 1.279s (± 0.76%) 1.256s (± 0.66%) -0.023s (- 1.81%) 1.234s 1.280s p=0.001 n=12
t3code-server - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 11,588,087 4,350,705 🟩-7,237,382 (-62.46%) ~ ~ p=0.000 n=12
Types 3,062,556 3,040,691 -21,865 (- 0.71%) ~ ~ p=0.000 n=12
Memory Used 3,945,773k (± 0.02%) 2,610,930k (± 0.02%) 🟩-1,334,843k (-33.83%) 2,609,734k 2,612,090k p=0.000 n=12
Memory Allocs 41,535,855 (± 0.04%) 37,327,648 (± 0.04%) 🟩-4,208,207 (-10.13%) 37,278,468 37,361,991 p=0.000 n=12
Config Time 0.006s 0.006s ~ ~ ~ p=1.000 n=12
Parse Time 0.571s (± 2.81%) 0.574s (± 2.84%) ~ 0.527s 0.620s p=0.702 n=12
Bind Time 0.168s (±12.94%) 0.168s (±11.31%) ~ 0.151s 0.240s p=0.853 n=12
Check Time 18.624s (± 0.37%) 16.462s (± 0.27%) 🟩-2.162s (-11.61%) 16.333s 16.532s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 19.384s (± 0.35%) 17.226s (± 0.26%) 🟩-2.158s (-11.13%) 17.101s 17.318s p=0.000 n=12
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=12
Symbols 303,834 231,636 🟩-72,198 (-23.76%) ~ ~ p=0.000 n=12
Types 181,663 181,196 -467 (- 0.26%) ~ ~ p=0.000 n=12
Memory Used 215,193k (± 0.02%) 203,518k (± 0.02%) 🟩-11,675k (- 5.43%) 203,361k 203,593k p=0.000 n=12
Memory Allocs 1,400,808 (± 0.02%) 1,358,352 (± 0.02%) 🟩-42,456 (- 3.03%) 1,357,664 1,358,797 p=0.000 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.095s (± 3.15%) 0.099s (± 3.29%) 🔻+0.004s (+ 4.56%) 0.088s 0.105s p=0.027 n=12
Bind Time 0.041s (± 7.34%) 0.041s (± 8.22%) ~ 0.034s 0.049s p=0.854 n=12
Check Time 0.739s (± 0.99%) 0.724s (± 0.74%) -0.015s (- 2.09%) 0.710s 0.740s p=0.007 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 0.890s (± 0.84%) 0.878s (± 0.64%) -0.011s (- 1.26%) 0.864s 0.895s p=0.029 n=12
vscode - native
Errors 10 10 ~ ~ ~ p=1.000 n=12
Symbols 13,341,775 7,162,498 🟩-6,179,277 (-46.32%) ~ ~ p=0.000 n=12
Types 4,344,397 4,221,491 -122,906 (- 2.83%) ~ ~ p=0.000 n=12
Memory Used 6,207,964k (± 0.03%) 5,341,528k (± 0.02%) 🟩-866,436k (-13.96%) 5,338,088k 5,344,159k p=0.000 n=12
Memory Allocs 63,118,950 (± 0.02%) 61,722,975 (± 0.05%) -1,395,975 (- 2.21%) 61,693,274 61,878,023 p=0.000 n=12
Config Time 0.078s (± 0.36%) 0.078s (± 0.36%) ~ 0.078s 0.079s p=1.000 n=12
Parse Time 1.918s (± 2.04%) 1.922s (± 2.86%) ~ 1.827s 2.107s p=0.811 n=12
Bind Time 0.732s (±12.84%) 0.791s (±14.41%) ~ 0.549s 0.978s p=0.601 n=12
Check Time 16.940s (± 0.74%) 15.712s (± 0.38%) 🟩-1.228s (- 7.25%) 15.498s 15.827s p=0.000 n=12
Emit Time 5.658s (± 6.78%) 6.058s (± 9.05%) ~ 5.007s 6.876s p=0.089 n=12
Total Time 25.412s (± 1.26%) 24.648s (± 2.32%) ~ 23.551s 25.554s p=0.068 n=12
webpack - native
Errors 602 602 ~ ~ ~ p=1.000 n=12
Symbols 1,351,469 916,593 🟩-434,876 (-32.18%) ~ ~ p=0.000 n=12
Types 656,677 643,793 -12,884 (- 1.96%) ~ ~ p=0.000 n=12
Memory Used 860,615k (± 0.02%) 765,170k (± 0.02%) 🟩-95,445k (-11.09%) 764,821k 765,598k p=0.000 n=12
Memory Allocs 6,831,074 (± 0.02%) 6,540,992 (± 0.04%) 🟩-290,082 (- 4.25%) 6,537,376 6,553,923 p=0.000 n=12
Config Time 0.009s 0.009s ~ ~ ~ p=1.000 n=12
Parse Time 0.324s (± 3.49%) 0.318s (± 3.70%) ~ 0.278s 0.342s p=0.744 n=12
Bind Time 0.082s (±15.80%) 0.089s (±14.20%) ~ 0.073s 0.136s p=0.057 n=12
Check Time 3.140s (± 0.61%) 2.976s (± 0.35%) 🟩-0.164s (- 5.21%) 2.949s 3.006s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 3.593s (± 0.55%) 3.433s (± 0.39%) 🟩-0.159s (- 4.43%) 3.404s 3.475s p=0.000 n=12
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,060,810 640,566 🟩-420,244 (-39.62%) ~ ~ p=0.000 n=12
Types 389,671 388,220 -1,451 (- 0.37%) ~ ~ p=0.000 n=12
Memory Used 471,707k (± 0.02%) 398,612k (± 0.03%) 🟩-73,095k (-15.50%) 398,437k 398,911k p=0.000 n=12
Memory Allocs 4,214,404 (± 0.06%) 3,993,371 (± 0.10%) 🟩-221,033 (- 5.24%) 3,983,118 4,005,731 p=0.000 n=12
Config Time 0.002s 0.002s ~ ~ ~ p=1.000 n=12
Parse Time 0.107s (± 2.33%) 0.106s (± 3.31%) ~ 0.097s 0.115s p=0.967 n=12
Bind Time 0.033s (±18.35%) 0.034s (±15.11%) ~ 0.027s 0.049s p=0.233 n=12
Check Time 0.909s (± 1.45%) 0.788s (± 0.74%) 🟩-0.120s (-13.24%) 0.778s 0.809s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 1.056s (± 1.28%) 0.938s (± 1.07%) 🟩-0.119s (-11.22%) 0.923s 0.972s p=0.000 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 23, 2026
@ahejlsberg
Anders Hejlsberg (ahejlsberg) added this pull request to the merge queue Oct 23, 2026
Merged via the queue into main with commit 8d9b6da Oct 23, 2026
29 checks passed
@ahejlsberg
Anders Hejlsberg (ahejlsberg) deleted the lazy-member-resolution branch October 23, 2026 19:45
@github-project-automation github-project-automation Bot moved this from Needs merge to Done in PR Backlog Oct 23, 2026
@typescript-automation

Copy link
Copy Markdown
Contributor

Anders Hejlsberg (@ahejlsberg) Here are the results of running the top 400 repos with tsc comparing baseline and pr:

Everything looks good!

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.

4 participants