Skip to content

Intern symbol names as pointer-free IDs - #64699

Draft
Jake Bailey (jakebailey) wants to merge 16 commits into
microsoft:mainfrom
jakebailey:intern-symbol-names
Draft

Jake Bailey (jakebailey) wants to merge 16 commits into
microsoft:mainfrom
jakebailey:intern-symbol-names

Conversation

@jakebailey

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

Copy link
Copy Markdown
Member

Symbol names are currently plain strings. Every identifier, symbol, symbol table key, and name-keyed cache holds its own 16-byte string header, every lookup hashes and compares the full text, and all of those pointers have to be scanned by the GC. On large projects that adds up to a lot of memory and GC work for what is effectively a small set of repeated names.

This PR interns symbol names instead:

  • ast.SymbolName is now a pointer-free 64-bit value holding an ID into a process-wide intern table, so names cost one word instead of a string header, compare and hash as integers, and are invisible to the GC. The zero value is the empty name.
  • Name text lives in a pointer-free arena of length-prefixed records, and a name's ID is its record's offset. Getting a name's text (which every intern hit does to verify a match) is a single dependent load, and the GC never scans any of it. IDs are 32 bits, enough for ~32 GB of name text.
  • The upper 32 bits encode synthesized names with unbounded numeric parts (private names, unique ES symbols, module patterns, (auto@N)/(generated@N)) as a kind, a number, and the ID of the base text, so they never enter the table. Internal \xFE-prefixed names are tagged too, so IsInternal, IsPrivateName, IsLateBoundName, and friends are bit tests. Storing names in 64 bits rather than 32 is free: every struct and map slot that holds a name aligns its neighbors to 8 bytes anyway.
  • Fixed names (InternalSymbolName* and friends) are compile-time constants generated by npx hereby generate:ast from one list in tools/scripts/tsc/symbolNames.ts, which also drives the JS InternalSymbolName enum. The generator computes their arena offsets, and the table checks them at startup.
  • Identifiers are interned once in the parser and the name is stored on Identifier, so the binder, checker, and language service use it directly rather than reinterning node text on each lookup. The AST schema gains a SymbolName type; the JS API still sees strings.
  • A small per-parser cache lets repeated identifiers in a file skip the shared table, and the scanner hashes identifiers as it scans them so the parser doesn't walk each name a second time.
  • The shared table is sharded with lock-free lookups. Each shard bump-allocates text from its own arena chunk, and read-mostly and written state are kept on separate cache lines, so parsing in parallel doesn't contend.

Latest perf run: 1.3–3.4% less memory on every project but one tiny one, check up to 9% faster, total time 1–7% faster on most projects (mui-docs 7%, sentry 4%, tanstack-router 3.6%), and no total-time regressions. Parse is 3–9% slower (one 0.014s outlier at 24%), since every identifier is now interned up front; that's down from 5–14% before the arena.

Interned names are never freed. That's bounded per program for tsc, and since synthesized names no longer enter the table, small for the language server too: 50K keystrokes of typing with completions in the compiler project leaves ~4K dead names (~100 KB). Closing large projects leaves their names behind (~17 MB after opening and closing vscode).

@typescript-automation typescript-automation Bot added Author: Team For Uncommitted Bug PR for untriaged, rejected, closed or missing bug labels Oct 8, 2026
@jakebailey

Copy link
Copy Markdown
Member Author

TypeScript Bot (@typescript-bot) perf test this

@typescript-automation

typescript-automation Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

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

Command Status Results
perf test this ✅ 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 115,276 ~ ~ ~ p=1.000 n=12
Types 79,613 79,613 ~ ~ ~ p=1.000 n=12
Memory Used 135,310k (± 0.08%) 134,555k (± 0.05%) -754k (- 0.56%) 134,394k 134,762k p=0.000 n=12
Memory Allocs 2,190,636 (± 0.00%) 2,279,198 (± 0.05%) 🔻+88,562 (+ 4.04%) 2,275,969 2,282,067 p=0.000 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.050s (± 2.84%) 0.049s (± 3.22%) ~ 0.044s 0.053s p=0.502 n=12
Bind Time 0.015s (±13.33%) 0.030s (± 7.99%) 🔻+0.015s (+99.45%) 0.026s 0.036s p=0.000 n=12
Check Time 0.615s (± 0.71%) 0.612s (± 0.92%) ~ 0.602s 0.630s p=0.162 n=12
Emit Time 0.329s (± 2.14%) 0.338s (± 1.22%) +0.009s (+ 2.68%) 0.324s 0.348s p=0.034 n=12
Total Time 1.018s (± 0.96%) 1.037s (± 0.62%) +0.019s (+ 1.88%) 1.021s 1.057s p=0.001 n=12
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=12
Symbols 845,989 (± 0.05%) 845,729 (± 0.09%) ~ 842,740 847,317 p=0.932 n=12
Types 248,124 (± 0.00%) 248,123 (± 0.00%) ~ 248,122 248,125 p=0.993 n=12
Memory Used 764,653k (± 0.02%) 746,535k (± 0.02%) -18,119k (- 2.37%) 746,119k 746,997k p=0.000 n=12
Memory Allocs 12,925,262 (± 0.06%) 13,352,078 (± 0.04%) +426,816 (+ 3.30%) 13,345,546 13,372,669 p=0.000 n=12
Config Time 0.016s (± 1.97%) 0.017s (± 1.07%) +0.001s (+ 3.05%) 0.016s 0.017s p=0.027 n=12
Parse Time 0.257s (± 2.58%) 0.259s (± 2.82%) ~ 0.234s 0.268s p=0.385 n=12
Bind Time 0.063s (±12.33%) 0.100s (±10.80%) 🔻+0.037s (+59.92%) 0.092s 0.150s p=0.000 n=12
Check Time 0s 0s ~ ~ ~ p=1.000 n=12
Emit Time 1.587s (± 1.21%) 1.626s (± 0.86%) +0.039s (+ 2.45%) 1.594s 1.679s p=0.004 n=12
Total Time 1.937s (± 1.28%) 2.014s (± 0.99%) +0.076s (+ 3.94%) 1.979s 2.101s p=0.000 n=12
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=12
Symbols 4,359,614 4,359,614 ~ ~ ~ p=1.000 n=12
Types 1,376,379 1,376,379 ~ ~ ~ p=1.000 n=12
Memory Used 2,874,210k (± 0.05%) 2,568,218k (± 0.05%) 🟩-305,992k (-10.65%) 2,564,693k 2,571,397k p=0.000 n=12
Memory Allocs 32,870,213 (± 0.08%) 33,621,012 (± 0.06%) +750,799 (+ 2.28%) 33,575,749 33,692,494 p=0.000 n=12
Config Time 0.020s (± 1.21%) 0.020s (± 1.52%) ~ 0.020s 0.021s p=0.640 n=12
Parse Time 0.624s (± 2.60%) 0.604s (± 2.39%) 🟩-0.020s (- 3.14%) 0.568s 0.640s p=0.050 n=12
Bind Time 0.003s (±13.14%) 0.003s (±12.54%) ~ 0.002s 0.003s p=1.000 n=12
Check Time 10.344s (± 0.63%) 9.367s (± 0.38%) 🟩-0.977s (- 9.44%) 9.291s 9.463s p=0.000 n=12
Emit Time 0.510s (± 1.88%) 0.513s (± 1.14%) ~ 0.505s 0.535s p=0.199 n=12
Total Time 12.430s (± 0.51%) 11.545s (± 0.32%) 🟩-0.886s (- 7.12%) 11.449s 11.644s p=0.000 n=12
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,390,229 1,390,229 ~ ~ ~ p=1.000 n=12
Types 441,498 441,498 ~ ~ ~ p=1.000 n=12
Memory Used 1,641,820k (± 0.88%) 1,623,524k (± 0.28%) -18,296k (- 1.11%) 1,612,197k 1,634,391k p=0.028 n=12
Memory Allocs 92,093,413 (± 0.16%) 95,246,262 (± 0.15%) +3,152,849 (+ 3.42%) 94,939,040 95,592,937 p=0.000 n=12
Config Time 0.003s (±14.60%) 0.003s (±14.59%) ~ 0.002s 0.004s p=0.784 n=12
Parse Time 0.191s (± 4.22%) 0.188s (± 2.57%) ~ 0.176s 0.199s p=0.639 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 1.820s (± 0.66%) 1.888s (± 0.45%) +0.068s (+ 3.72%) 1.869s 1.908s p=0.000 n=12
Emit Time 0.305s (± 5.01%) 0.321s (± 4.73%) ~ 0.283s 0.372s p=0.173 n=12
Total Time 23.652s (± 0.97%) 24.999s (± 0.56%) 🔻+1.347s (+ 5.70%) 24.737s 25.487s p=0.000 n=12
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 334,953 334,953 ~ ~ ~ p=1.000 n=12
Types 197,616 197,616 ~ ~ ~ p=1.000 n=12
Memory Used 302,588k (± 0.03%) 299,768k (± 0.02%) -2,820k (- 0.93%) 299,594k 299,874k p=0.000 n=12
Memory Allocs 4,622,914 (± 0.01%) 4,830,806 (± 0.01%) 🔻+207,892 (+ 4.50%) 4,830,094 4,831,876 p=0.000 n=12
Config Time 0.001s (±29.38%) 0.001s (±65.70%) ~ 0.000s 0.001s p=0.193 n=12
Parse Time 0.092s (± 5.04%) 0.095s (± 4.82%) ~ 0.083s 0.110s p=0.223 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 0.878s (± 0.68%) 0.912s (± 0.42%) +0.034s (+ 3.83%) 0.900s 0.920s p=0.000 n=12
Emit Time 0.109s (±10.35%) 0.124s (± 6.74%) 🔻+0.015s (+13.72%) 0.098s 0.140s p=0.013 n=12
Total Time 1.121s (± 1.06%) 1.201s (± 1.07%) 🔻+0.081s (+ 7.20%) 1.160s 1.235s p=0.000 n=12
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=12
Symbols 303,834 303,834 ~ ~ ~ p=1.000 n=12
Types 181,663 181,663 ~ ~ ~ p=1.000 n=12
Memory Used 263,493k (± 0.02%) 260,182k (± 0.02%) -3,311k (- 1.26%) 259,924k 260,272k p=0.000 n=12
Memory Allocs 1,616,022 (± 0.01%) 1,791,998 (± 0.01%) 🔻+175,976 (+10.89%) 1,791,727 1,792,462 p=0.000 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.099s (± 3.19%) 0.098s (± 4.94%) ~ 0.089s 0.108s p=0.832 n=12
Bind Time 0.037s (± 9.76%) 0.070s (± 7.91%) 🔻+0.034s (+90.97%) 0.058s 0.081s p=0.000 n=12
Check Time 0.829s (± 0.76%) 0.860s (± 0.82%) +0.031s (+ 3.69%) 0.844s 0.878s p=0.000 n=12
Emit Time 0.000s (±217.90%) 0.000s ~ ~ ~ p=1.000 n=12
Total Time 0.981s (± 0.53%) 1.043s (± 0.71%) 🔻+0.062s (+ 6.29%) 1.026s 1.069s p=0.000 n=12
vscode - native
Errors 380 380 ~ ~ ~ p=1.000 n=12
Symbols 11,126,412 11,126,412 ~ ~ ~ p=1.000 n=12
Types 3,695,451 3,695,451 ~ ~ ~ p=1.000 n=12
Memory Used 6,709,468k (± 0.02%) 6,472,806k (± 0.02%) 🟩-236,662k (- 3.53%) 6,468,963k 6,477,601k p=0.000 n=12
Memory Allocs 54,762,461 (± 0.03%) 56,714,048 (± 0.02%) +1,951,587 (+ 3.56%) 56,703,781 56,758,908 p=0.000 n=12
Config Time 0.073s (± 0.56%) 0.074s (± 0.44%) +0.001s (+ 1.48%) 0.074s 0.075s p=0.000 n=12
Parse Time 1.812s (± 3.88%) 1.836s (± 3.66%) ~ 1.672s 2.035s p=0.671 n=12
Bind Time 0.622s (±18.49%) 0.831s (±15.00%) 🔻+0.209s (+33.64%) 0.690s 1.232s p=0.018 n=12
Check Time 13.958s (± 1.17%) 14.712s (± 0.99%) 🔻+0.753s (+ 5.40%) 14.238s 14.937s p=0.000 n=12
Emit Time 4.908s (±12.67%) 4.654s (± 8.71%) ~ 4.184s 6.004s p=0.443 n=12
Total Time 21.463s (± 2.41%) 22.186s (± 1.51%) ~ 21.711s 23.306s p=0.143 n=12
webpack - native
Errors 589 589 ~ ~ ~ p=1.000 n=12
Symbols 1,304,270 1,304,270 ~ ~ ~ p=1.000 n=12
Types 618,461 618,461 ~ ~ ~ p=1.000 n=12
Memory Used 958,988k (± 0.01%) 925,774k (± 0.02%) 🟩-33,214k (- 3.46%) 925,297k 926,313k p=0.000 n=12
Memory Allocs 6,606,657 (± 0.01%) 7,086,476 (± 0.04%) 🔻+479,819 (+ 7.26%) 7,081,900 7,094,237 p=0.000 n=12
Config Time 0.009s 0.009s ~ ~ ~ p=1.000 n=12
Parse Time 0.288s (± 3.23%) 0.291s (± 3.25%) ~ 0.267s 0.319s p=0.744 n=12
Bind Time 0.086s (±20.33%) 0.128s (±10.05%) 🔻+0.042s (+49.03%) 0.107s 0.177s p=0.001 n=12
Check Time 2.073s (± 1.02%) 2.127s (± 0.88%) +0.054s (+ 2.62%) 2.073s 2.162s p=0.001 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 2.491s (± 0.52%) 2.591s (± 0.63%) 🔻+0.101s (+ 4.03%) 2.558s 2.639s p=0.000 n=12
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,055,452 1,055,452 ~ ~ ~ p=1.000 n=12
Types 386,738 386,738 ~ ~ ~ p=1.000 n=12
Memory Used 570,764k (± 0.03%) 545,375k (± 0.03%) 🟩-25,389k (- 4.45%) 545,072k 545,991k p=0.000 n=12
Memory Allocs 4,859,932 (± 0.08%) 5,156,372 (± 0.09%) 🔻+296,440 (+ 6.10%) 5,146,655 5,173,137 p=0.000 n=12
Config Time 0.003s (± 6.23%) 0.003s (± 6.23%) ~ 0.002s 0.003s p=1.000 n=12
Parse Time 0.143s (± 2.40%) 0.145s (± 3.12%) ~ 0.131s 0.154s p=0.416 n=12
Bind Time 0.044s (±21.01%) 0.090s (±12.08%) 🔻+0.046s (+104.91%) 0.066s 0.111s p=0.000 n=12
Check Time 1.128s (± 0.48%) 1.130s (± 0.74%) ~ 1.112s 1.164s p=0.660 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 1.324s (± 0.56%) 1.374s (± 0.76%) +0.050s (+ 3.78%) 1.344s 1.394s p=0.000 n=12
System info unknown
Hosts
  • native
Scenarios
  • Compiler-Unions - native
  • angular-1 - native
  • mui-docs - native
  • strada-build-src - native
  • strada-compiler - native
  • ts-pre-modules - native
  • vscode - native
  • webpack - native
  • xstate-main - native
Benchmark Name Iterations
Current pr 12
Baseline baseline 12

lsp

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
Compiler-UnionsLSP - native
Req 1 - updateOpen 13ms (±10.94%) 14ms (±10.03%) ~ 11ms 17ms p=0.513 n=12
Req 2 - geterr 699ms (± 0.41%) 709ms (± 0.64%) +9ms (+ 1.33%) 697ms 717ms p=0.002 n=12
Req 3 - references 53ms (± 4.78%) 52ms (± 7.15%) ~ 43ms 62ms p=0.382 n=12
Req 4 - navto 20ms (± 3.00%) 20ms (± 6.07%) ~ 18ms 26ms p=0.383 n=12
Req 5 - completionInfo count 1,363 1,363 ~ ~ ~ p=1.000 n=12
Req 5 - completionInfo 20ms (± 7.01%) 20ms (±11.54%) ~ 16ms 30ms p=0.136 n=12
CompilerLSP - native
Req 1 - updateOpen 12ms (±13.27%) 11ms (±10.67%) ~ 10ms 15ms p=1.000 n=12
Req 2 - geterr 298ms (± 0.64%) 318ms (± 0.60%) 🔻+20ms (+ 6.76%) 313ms 324ms p=0.000 n=12
Req 3 - references 50ms (± 3.62%) 49ms (± 4.22%) ~ 44ms 54ms p=0.678 n=12
Req 4 - navto 17ms (± 3.43%) 17ms (± 2.54%) ~ 15ms 17ms p=0.167 n=12
Req 5 - completionInfo count 1,525 1,525 ~ ~ ~ p=1.000 n=12
Req 5 - completionInfo 17ms (± 6.11%) 17ms (± 6.98%) ~ 15ms 21ms p=0.741 n=12
System info unknown
Hosts
  • native
Scenarios
  • CompilerLSP - native
  • Compiler-UnionsLSP - native
  • xstate-main-1-LSP - native
Benchmark Name Iterations
Current pr 12
Baseline baseline 12

startup

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
lsp-startup - native
Execution time 4.80ms (±365.08%) 4.83ms (±365.09%) +0.03ms (+ 0.62%) 0.00ms 491.10ms p=0.000 n=1200
tsgo-startup - native
Execution time 5.83ms (±365.09%) 5.88ms (±365.08%) +0.04ms (+ 0.73%) 0.00ms 593.40ms p=0.000 n=1200
System info unknown
Hosts
  • native
Scenarios
  • lsp-startup - native
  • tsgo-startup - native
Benchmark Name Iterations
Current pr 12
Baseline baseline 12

Developer Information:

Download Benchmarks

@jakebailey

Copy link
Copy Markdown
Member Author

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

@typescript-automation

typescript-automation Bot commented Oct 15, 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 115,276 ~ ~ ~ p=1.000 n=12
Types 79,613 79,613 ~ ~ ~ p=1.000 n=12
Memory Used 113,479k (± 0.05%) 109,247k (± 0.06%) 🟩-4,232k (- 3.73%) 109,072k 109,388k p=0.000 n=12
Memory Allocs 2,212,486 (± 0.01%) 2,220,023 (± 0.01%) +7,536 (+ 0.34%) 2,219,635 2,220,280 p=0.000 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.039s (± 4.40%) 0.044s (± 3.77%) 🔻+0.005s (+13.03%) 0.040s 0.048s p=0.000 n=12
Bind Time 0.013s (±10.03%) 0.013s (± 8.82%) ~ 0.010s 0.017s p=0.395 n=12
Check Time 0.467s (± 0.43%) 0.456s (± 0.84%) -0.010s (- 2.23%) 0.448s 0.465s p=0.000 n=12
Emit Time 0.265s (± 1.66%) 0.267s (± 1.43%) ~ 0.258s 0.276s p=0.579 n=12
Total Time 0.791s (± 0.67%) 0.786s (± 0.42%) ~ 0.781s 0.795s p=0.103 n=12
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=12
Symbols 847,026 (± 0.07%) 847,024 (± 0.11%) ~ 844,638 849,050 p=0.887 n=12
Types 247,032 (± 0.00%) 247,032 (± 0.00%) ~ 247,030 247,042 p=0.548 n=12
Memory Used 596,379k (± 0.03%) 560,230k (± 0.03%) 🟩-36,149k (- 6.06%) 559,817k 560,650k p=0.000 n=12
Memory Allocs 13,149,404 (± 0.09%) 13,172,319 (± 0.05%) +22,915 (+ 0.17%) 13,168,352 13,205,949 p=0.001 n=12
Config Time 0.017s (± 1.45%) 0.017s (± 1.07%) ~ 0.016s 0.017s p=1.000 n=12
Parse Time 0.221s (± 2.54%) 0.245s (± 4.57%) 🔻+0.024s (+10.71%) 0.220s 0.283s p=0.000 n=12
Bind Time 0.088s (±13.82%) 0.067s (±15.71%) 🟩-0.021s (-24.22%) 0.056s 0.100s p=0.005 n=12
Check Time 0s 0s ~ ~ ~ p=1.000 n=12
Emit Time 1.559s (± 1.24%) 1.532s (± 1.28%) -0.027s (- 1.74%) 1.484s 1.597s p=0.046 n=12
Total Time 1.904s (± 0.95%) 1.874s (± 1.06%) -0.031s (- 1.61%) 1.811s 1.922s p=0.020 n=12
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=12
Symbols 4,331,835 4,331,835 ~ ~ ~ p=1.000 n=12
Types 1,370,520 1,370,520 ~ ~ ~ p=1.000 n=12
Memory Used 2,626,589k (± 0.07%) 2,273,471k (± 0.08%) 🟩-353,118k (-13.44%) 2,269,818k 2,278,100k p=0.000 n=12
Memory Allocs 27,705,934 (± 0.05%) 27,696,753 (± 0.06%) ~ 27,658,960 27,747,847 p=0.551 n=12
Config Time 0.017s (± 1.86%) 0.017s ~ ~ ~ p=0.093 n=12
Parse Time 0.468s (± 3.07%) 0.476s (± 4.02%) ~ 0.429s 0.513s p=0.451 n=12
Bind Time 0.002s 0.002s (± 9.47%) ~ 0.001s 0.002s p=1.000 n=12
Check Time 7.273s (± 0.66%) 6.394s (± 0.42%) 🟩-0.879s (-12.09%) 6.365s 6.491s p=0.000 n=12
Emit Time 0.497s (±11.53%) 0.461s (± 2.62%) ~ 0.420s 0.472s p=0.787 n=12
Total Time 8.998s (± 0.74%) 8.100s (± 0.22%) 🟩-0.897s (- 9.97%) 8.055s 8.145s p=0.000 n=12
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,388,669 1,388,669 ~ ~ ~ p=1.000 n=12
Types 441,862 441,862 ~ ~ ~ p=1.000 n=12
Memory Used 1,317,489k (± 0.62%) 1,250,199k (± 0.49%) 🟩-67,289k (- 5.11%) 1,232,740k 1,272,021k p=0.000 n=12
Memory Allocs 78,188,492 (± 0.06%) 78,316,018 (± 0.15%) +127,526 (+ 0.16%) 77,974,859 78,560,994 p=0.020 n=12
Config Time 0.003s (± 8.75%) 0.006s (±13.52%) 🔻+0.003s (+97.44%) 0.004s 0.009s p=0.000 n=12
Parse Time 0.252s (± 3.11%) 0.279s (± 1.60%) 🔻+0.027s (+10.74%) 0.267s 0.291s p=0.000 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 1.677s (± 0.53%) 1.617s (± 0.39%) 🟩-0.061s (- 3.61%) 1.596s 1.633s p=0.000 n=12
Emit Time 0.297s (± 3.44%) 0.284s (± 3.71%) ~ 0.253s 0.310s p=0.061 n=12
Total Time 19.834s (± 0.51%) 19.290s (± 0.58%) -0.544s (- 2.74%) 19.005s 19.590s p=0.000 n=12
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 334,953 334,953 ~ ~ ~ p=1.000 n=12
Types 197,616 197,616 ~ ~ ~ p=1.000 n=12
Memory Used 247,512k (± 0.03%) 235,878k (± 0.03%) 🟩-11,634k (- 4.70%) 235,668k 236,047k p=0.000 n=12
Memory Allocs 4,329,530 (± 0.01%) 4,347,875 (± 0.01%) +18,345 (+ 0.42%) 4,346,250 4,348,965 p=0.000 n=12
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=12
Parse Time 0.111s (± 5.77%) 0.127s (± 2.34%) 🔻+0.016s (+14.15%) 0.118s 0.134s p=0.000 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 0.961s (± 0.56%) 0.945s (± 0.48%) -0.016s (- 1.65%) 0.933s 0.957s p=0.000 n=12
Emit Time 0.145s (± 4.78%) 0.149s (± 3.81%) ~ 0.129s 0.161s p=0.522 n=12
Total Time 1.273s (± 0.77%) 1.273s (± 0.60%) ~ 1.251s 1.288s p=0.744 n=12
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=12
Symbols 303,834 303,834 ~ ~ ~ p=1.000 n=12
Types 181,663 181,663 ~ ~ ~ p=1.000 n=12
Memory Used 215,246k (± 0.02%) 204,557k (± 0.02%) 🟩-10,689k (- 4.97%) 204,473k 204,646k p=0.000 n=12
Memory Allocs 1,401,509 (± 0.01%) 1,417,139 (± 0.02%) +15,630 (+ 1.12%) 1,416,670 1,417,761 p=0.000 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.096s (± 3.98%) 0.110s (± 4.09%) 🔻+0.015s (+15.16%) 0.099s 0.121s p=0.000 n=12
Bind Time 0.043s (± 8.47%) 0.039s (±10.15%) ~ 0.032s 0.051s p=0.102 n=12
Check Time 0.747s (± 0.83%) 0.729s (± 0.88%) -0.017s (- 2.33%) 0.715s 0.743s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 0.900s (± 0.64%) 0.893s (± 0.77%) ~ 0.876s 0.909s p=0.181 n=12
vscode - native
Errors 396 396 ~ ~ ~ p=1.000 n=12
Symbols 11,850,414 11,850,414 ~ ~ ~ p=1.000 n=12
Types 3,908,124 3,908,124 ~ ~ ~ p=1.000 n=12
Memory Used 5,600,881k (± 0.02%) 5,216,068k (± 0.03%) 🟩-384,813k (- 6.87%) 5,213,135k 5,220,738k p=0.000 n=12
Memory Allocs 57,029,448 (± 0.10%) 57,054,527 (± 0.02%) +25,079 (+ 0.04%) 57,033,205 57,086,847 p=0.000 n=12
Config Time 0.075s (± 0.43%) 0.076s (± 0.86%) ~ 0.075s 0.079s p=0.150 n=12
Parse Time 1.754s (± 2.09%) 1.903s (± 2.04%) 🔻+0.149s (+ 8.49%) 1.774s 2.010s p=0.000 n=12
Bind Time 0.669s (±13.18%) 0.549s (±13.23%) 🟩-0.120s (-17.90%) 0.472s 0.807s p=0.010 n=12
Check Time 14.650s (± 0.74%) 14.531s (± 0.84%) ~ 14.190s 14.751s p=0.514 n=12
Emit Time 5.671s (± 7.34%) 5.544s (± 6.48%) ~ 4.461s 6.013s p=0.561 n=12
Total Time 22.911s (± 1.46%) 22.686s (± 1.56%) ~ 21.652s 23.230s p=0.347 n=12
webpack - native
Errors 584 584 ~ ~ ~ p=1.000 n=12
Symbols 1,297,360 1,297,360 ~ ~ ~ p=1.000 n=12
Types 593,542 593,542 ~ ~ ~ p=1.000 n=12
Memory Used 784,599k (± 0.03%) 731,203k (± 0.03%) 🟩-53,396k (- 6.81%) 730,793k 731,773k p=0.000 n=12
Memory Allocs 6,034,028 (± 0.06%) 6,068,414 (± 0.04%) +34,386 (+ 0.57%) 6,063,913 6,075,621 p=0.000 n=12
Config Time 0.009s 0.009s (± 2.00%) ~ 0.009s 0.010s p=1.000 n=12
Parse Time 0.302s (± 3.50%) 0.306s (± 2.98%) ~ 0.279s 0.338s p=0.560 n=12
Bind Time 0.074s (± 3.57%) 0.075s (± 8.70%) ~ 0.064s 0.095s p=0.560 n=12
Check Time 2.133s (± 0.60%) 2.055s (± 0.43%) 🟩-0.077s (- 3.63%) 2.032s 2.077s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 2.554s (± 0.65%) 2.483s (± 0.57%) -0.070s (- 2.75%) 2.457s 2.528s p=0.000 n=12
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,062,854 1,062,854 ~ ~ ~ p=1.000 n=12
Types 390,845 390,845 ~ ~ ~ p=1.000 n=12
Memory Used 472,259k (± 0.02%) 434,074k (± 0.03%) 🟩-38,185k (- 8.09%) 433,757k 434,462k p=0.000 n=12
Memory Allocs 4,223,835 (± 0.07%) 4,245,930 (± 0.06%) +22,095 (+ 0.52%) 4,238,989 4,253,061 p=0.000 n=12
Config Time 0.003s (± 6.23%) 0.003s (± 8.64%) ~ 0.002s 0.003s p=1.000 n=12
Parse Time 0.133s (± 3.58%) 0.148s (± 2.41%) 🔻+0.014s (+10.75%) 0.138s 0.156s p=0.000 n=12
Bind Time 0.049s (±18.00%) 0.039s (±11.68%) ~ 0.032s 0.051s p=0.074 n=12
Check Time 1.010s (± 0.74%) 0.966s (± 0.87%) 🟩-0.044s (- 4.36%) 0.946s 0.989s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 1.202s (± 0.48%) 1.164s (± 0.70%) 🟩-0.038s (- 3.13%) 1.141s 1.177s p=0.000 n=12
System info unknown
Hosts
  • native
Scenarios
  • Compiler-Unions - native
  • angular-1 - native
  • mui-docs - native
  • strada-build-src - native
  • strada-compiler - native
  • ts-pre-modules - native
  • vscode - native
  • webpack - native
  • xstate-main - native
Benchmark Name Iterations
Current pr 12
Baseline baseline 12

Developer Information:

Download Benchmarks

@jakebailey

Copy link
Copy Markdown
Member Author

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

@typescript-automation

typescript-automation Bot commented Oct 15, 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 115,276 ~ ~ ~ p=1.000 n=12
Types 79,613 79,613 ~ ~ ~ p=1.000 n=12
Memory Used 113,544k (± 0.07%) 109,252k (± 0.04%) 🟩-4,292k (- 3.78%) 109,128k 109,360k p=0.000 n=12
Memory Allocs 2,212,499 (± 0.01%) 2,220,006 (± 0.01%) +7,508 (+ 0.34%) 2,219,689 2,220,362 p=0.000 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.038s (± 4.50%) 0.043s (± 2.88%) 🔻+0.005s (+13.63%) 0.040s 0.046s p=0.000 n=12
Bind Time 0.014s (± 9.15%) 0.012s (± 7.92%) ~ 0.011s 0.015s p=0.138 n=12
Check Time 0.469s (± 0.80%) 0.452s (± 0.62%) 🟩-0.016s (- 3.45%) 0.446s 0.461s p=0.000 n=12
Emit Time 0.269s (± 2.12%) 0.269s (± 2.28%) ~ 0.254s 0.285s p=0.944 n=12
Total Time 0.796s (± 0.90%) 0.784s (± 0.73%) -0.012s (- 1.54%) 0.769s 0.799s p=0.011 n=12
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=12
Symbols 847,116 (± 0.08%) 847,194 (± 0.08%) ~ 845,430 848,650 p=0.887 n=12
Types 247,033 (± 0.00%) 247,032 (± 0.00%) ~ 247,030 247,034 p=0.390 n=12
Memory Used 596,464k (± 0.02%) 560,313k (± 0.03%) 🟩-36,151k (- 6.06%) 559,807k 560,648k p=0.000 n=12
Memory Allocs 13,143,148 (± 0.05%) 13,173,236 (± 0.04%) +30,088 (+ 0.23%) 13,166,102 13,191,128 p=0.000 n=12
Config Time 0.020s (± 1.40%) 0.021s (± 6.20%) ~ 0.020s 0.025s p=0.443 n=12
Parse Time 0.286s (± 2.63%) 0.310s (± 2.80%) 🔻+0.024s (+ 8.36%) 0.288s 0.326s p=0.000 n=12
Bind Time 0.108s (±12.71%) 0.095s (±13.89%) ~ 0.076s 0.135s p=0.190 n=12
Check Time 0s 0s ~ ~ ~ p=1.000 n=12
Emit Time 1.907s (± 1.25%) 1.928s (± 2.31%) ~ 1.782s 2.037s p=0.284 n=12
Total Time 2.344s (± 1.13%) 2.374s (± 1.89%) ~ 2.211s 2.471s p=0.117 n=12
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=12
Symbols 4,331,835 4,331,835 ~ ~ ~ p=1.000 n=12
Types 1,370,520 1,370,520 ~ ~ ~ p=1.000 n=12
Memory Used 2,625,369k (± 0.06%) 2,272,617k (± 0.07%) 🟩-352,751k (-13.44%) 2,268,756k 2,277,064k p=0.000 n=12
Memory Allocs 27,722,151 (± 0.14%) 27,711,856 (± 0.13%) ~ 27,664,278 27,886,220 p=0.551 n=12
Config Time 0.020s (± 1.59%) 0.020s (± 0.90%) ~ 0.020s 0.021s p=0.155 n=12
Parse Time 0.593s (± 3.32%) 0.604s (± 2.86%) ~ 0.551s 0.655s p=0.124 n=12
Bind Time 0.003s (± 8.64%) 0.002s (±13.40%) ~ 0.002s 0.003s p=0.089 n=12
Check Time 8.655s (± 0.16%) 7.611s (± 0.46%) 🟩-1.043s (-12.06%) 7.572s 7.740s p=0.000 n=12
Emit Time 0.750s (± 8.09%) 0.565s (± 3.04%) 🟩-0.184s (-24.57%) 0.506s 0.583s p=0.000 n=12
Total Time 10.937s (± 0.67%) 9.717s (± 0.28%) 🟩-1.220s (-11.15%) 9.639s 9.792s p=0.000 n=12
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,388,669 1,388,669 ~ ~ ~ p=1.000 n=12
Types 441,862 441,862 ~ ~ ~ p=1.000 n=12
Memory Used 1,318,031k (± 0.91%) 1,249,734k (± 0.54%) 🟩-68,297k (- 5.18%) 1,234,336k 1,275,228k p=0.000 n=12
Memory Allocs 78,217,623 (± 0.06%) 78,188,817 (± 0.17%) ~ 77,764,171 78,445,656 p=0.755 n=12
Config Time 0.004s (± 9.20%) 0.008s (±18.01%) 🔻+0.004s (+90.20%) 0.005s 0.012s p=0.000 n=12
Parse Time 0.308s (± 2.05%) 0.327s (± 1.92%) 🔻+0.019s (+ 6.25%) 0.309s 0.341s p=0.001 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 2.000s (± 0.55%) 1.934s (± 0.36%) 🟩-0.066s (- 3.31%) 1.916s 1.949s p=0.000 n=12
Emit Time 0.342s (± 3.89%) 0.342s (± 1.98%) ~ 0.328s 0.361s p=0.745 n=12
Total Time 23.672s (± 0.48%) 23.174s (± 0.55%) -0.498s (- 2.10%) 22.829s 23.533s p=0.000 n=12
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 334,953 334,953 ~ ~ ~ p=1.000 n=12
Types 197,616 197,616 ~ ~ ~ p=1.000 n=12
Memory Used 247,527k (± 0.03%) 235,858k (± 0.03%) 🟩-11,669k (- 4.71%) 235,696k 236,027k p=0.000 n=12
Memory Allocs 4,329,509 (± 0.01%) 4,347,864 (± 0.01%) +18,355 (+ 0.42%) 4,346,840 4,349,273 p=0.000 n=12
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=12
Parse Time 0.113s (± 5.39%) 0.128s (± 3.31%) 🔻+0.015s (+13.03%) 0.110s 0.137s p=0.001 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 0.962s (± 0.72%) 0.950s (± 0.61%) -0.013s (- 1.30%) 0.935s 0.969s p=0.002 n=12
Emit Time 0.147s (± 7.01%) 0.143s (± 4.22%) ~ 0.126s 0.156s p=0.854 n=12
Total Time 1.276s (± 1.00%) 1.273s (± 0.82%) ~ 1.236s 1.294s p=1.000 n=12
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=12
Symbols 303,834 303,834 ~ ~ ~ p=1.000 n=12
Types 181,663 181,663 ~ ~ ~ p=1.000 n=12
Memory Used 215,249k (± 0.02%) 204,556k (± 0.02%) 🟩-10,693k (- 4.97%) 204,493k 204,649k p=0.000 n=12
Memory Allocs 1,401,614 (± 0.01%) 1,417,302 (± 0.01%) +15,688 (+ 1.12%) 1,416,588 1,417,751 p=0.000 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.080s (± 4.55%) 0.085s (± 3.45%) 🔻+0.005s (+ 6.88%) 0.077s 0.094s p=0.023 n=12
Bind Time 0.034s (± 7.66%) 0.030s (±10.12%) ~ 0.023s 0.037s p=0.066 n=12
Check Time 0.617s (± 0.86%) 0.607s (± 1.27%) -0.011s (- 1.75%) 0.593s 0.632s p=0.016 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 0.743s (± 0.73%) 0.734s (± 1.15%) -0.009s (- 1.22%) 0.721s 0.764s p=0.027 n=12
vscode - native
Errors 396 396 ~ ~ ~ p=1.000 n=12
Symbols 11,858,782 11,858,782 ~ ~ ~ p=1.000 n=12
Types 3,913,076 3,913,076 ~ ~ ~ p=1.000 n=12
Memory Used 5,602,594k (± 0.02%) 5,217,111k (± 0.02%) 🟩-385,483k (- 6.88%) 5,214,586k 5,220,496k p=0.000 n=12
Memory Allocs 57,046,573 (± 0.00%) 57,097,906 (± 0.02%) +51,333 (+ 0.09%) 57,077,234 57,127,863 p=0.000 n=12
Config Time 0.075s (± 0.70%) 0.075s (± 0.33%) ~ 0.075s 0.076s p=1.000 n=12
Parse Time 1.812s (± 2.12%) 1.923s (± 2.43%) 🔻+0.111s (+ 6.13%) 1.725s 2.029s p=0.001 n=12
Bind Time 0.573s (±10.43%) 0.501s (±12.43%) 🟩-0.072s (-12.56%) 0.452s 0.814s p=0.000 n=12
Check Time 14.773s (± 1.06%) 14.516s (± 0.63%) ~ 14.125s 14.686s p=0.097 n=12
Emit Time 5.620s (± 6.22%) 5.089s (± 6.75%) 🟩-0.530s (- 9.44%) 4.394s 6.185s p=0.028 n=12
Total Time 22.940s (± 1.16%) 22.183s (± 1.51%) 🟩-0.757s (- 3.30%) 21.501s 23.093s p=0.002 n=12
webpack - native
Errors 584 584 ~ ~ ~ p=1.000 n=12
Symbols 1,286,346 1,286,346 ~ ~ ~ p=1.000 n=12
Types 586,899 586,899 ~ ~ ~ p=1.000 n=12
Memory Used 775,946k (± 0.02%) 724,486k (± 0.01%) 🟩-51,460k (- 6.63%) 724,244k 724,703k p=0.000 n=12
Memory Allocs 5,993,657 (± 0.03%) 6,030,764 (± 0.02%) +37,106 (+ 0.62%) 6,028,538 6,035,314 p=0.000 n=12
Config Time 0.009s 0.009s ~ ~ ~ p=1.000 n=12
Parse Time 0.309s (± 2.75%) 0.311s (± 3.07%) ~ 0.292s 0.343s p=0.810 n=12
Bind Time 0.068s (± 1.94%) 0.069s (± 3.98%) ~ 0.065s 0.080s p=0.897 n=12
Check Time 1.953s (± 0.29%) 1.878s (± 0.40%) 🟩-0.074s (- 3.82%) 1.854s 1.895s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 2.373s (± 0.50%) 2.302s (± 0.55%) -0.071s (- 2.98%) 2.280s 2.343s p=0.000 n=12
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,062,854 1,062,854 ~ ~ ~ p=1.000 n=12
Types 390,845 390,845 ~ ~ ~ p=1.000 n=12
Memory Used 472,425k (± 0.04%) 434,137k (± 0.02%) 🟩-38,288k (- 8.10%) 433,890k 434,373k p=0.000 n=12
Memory Allocs 4,228,361 (± 0.09%) 4,250,806 (± 0.07%) +22,444 (+ 0.53%) 4,241,973 4,259,903 p=0.000 n=12
Config Time 0.002s 0.002s ~ ~ ~ p=1.000 n=12
Parse Time 0.103s (± 2.19%) 0.115s (± 2.65%) 🔻+0.011s (+11.03%) 0.108s 0.122s p=0.000 n=12
Bind Time 0.039s (±15.90%) 0.029s (±14.67%) 🟩-0.010s (-25.91%) 0.025s 0.047s p=0.001 n=12
Check Time 0.827s (± 0.99%) 0.806s (± 1.27%) -0.021s (- 2.51%) 0.786s 0.842s p=0.002 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 0.978s (± 1.16%) 0.958s (± 1.18%) -0.020s (- 2.08%) 0.935s 0.991s p=0.014 n=12
System info unknown
Hosts
  • native
Scenarios
  • Compiler-Unions - native
  • angular-1 - native
  • mui-docs - native
  • strada-build-src - native
  • strada-compiler - native
  • ts-pre-modules - native
  • vscode - native
  • webpack - native
  • xstate-main - native
Benchmark Name Iterations
Current pr 12
Baseline baseline 12

Developer Information:

Download Benchmarks

Symbols should share canonical names so identity checks and symbol-table
lookups do not repeatedly compare string contents. Preserve textual
behavior for diagnostics, emitted output, and the JavaScript API.
Known names and intermediate name operations should stay interned;
repeated interning and string round trips defeat the canonical
representation in frequently used lookup paths.
Symbol names need their own constructor and representation boundary,
without exposing generic string handles throughout the compiler.

Give name serialization a lossless escaped spelling and distinguish
unset names from valid empty names.
unique.Make registers a weak handle for every new string, which made
binding substantially slower and added allocations. Canonical names do
not need to be collected during a compilation, so a dedicated table can
make interning cheap.

Identifying names by a 32-bit ID also keeps them free of pointers, so
the symbol tables, nodes, and caches that store them cost the garbage
collector nothing to scan or write-barrier.
Binding, checking, and language features reinterned identifier text at
every symbol-table lookup, so interning cost was paid many times per
identifier and showed up as a large binding regression.

Interning once when the identifier is created lets every later lookup
use the stored name directly. The AST schema gains a SymbolName field
type so the generated Go AST and encoder carry the interned name while
the JavaScript API still sees a plain string.
Most identifiers in a file repeat a small set of names, and going to
the shared intern table for each one makes parsing noticeably slower,
especially when many files are parsed in parallel. A small per-parser
cache resolves repeated names without touching shared state.
Interning every identifier at parse time hashes its text, but the
scanner has just walked the same bytes. Hashing while scanning saves a
second pass over each identifier in the parser's hottest path.

                                                          │   sec/op    │   sec/op     vs base               │
    Parse/empty.ts-20                                       610.1n ± 2%   610.2n ± 1%       ~ (p=0.767 n=12)
    Parse/checker.ts-20                                     46.61m ± 3%   45.68m ± 3%  -1.99% (p=0.005 n=12)
    Parse/dom.generated.d.ts-20                             16.71m ± 2%   16.53m ± 3%       ~ (p=0.178 n=12)
    Parse/Herebyfile.mjs-20                                 786.8µ ± 2%   779.4µ ± 1%       ~ (p=0.319 n=12)
    Parse/jsxComplexSignatureHasApplicabilityError.tsx-20   218.6µ ± 2%   213.3µ ± 2%  -2.41% (p=0.012 n=12)
    geomean                                                 606.0µ        598.2µ       -1.29%
@jakebailey Jake Bailey (jakebailey) changed the title Switch to type SymbolName unique.Handle[string] Intern symbol names as 32-bit IDs Oct 26, 2026
@jakebailey

Copy link
Copy Markdown
Member Author

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

@typescript-automation

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

Provisional hosted-runner results: these VMs are not the dedicated benchmark machines. Results may be noisier and are not comparable to the historical series. For comparisons, both revisions of each scenario ran on the same VM.

tsc

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
Compiler-Unions - native
Errors 41 41 ~ ~ ~ p=1.000 n=12
Symbols 88,466 88,466 ~ ~ ~ p=1.000 n=12
Types 79,607 79,607 ~ ~ ~ p=1.000 n=12
Memory Used 107,853k (± 0.09%) 104,511k (± 0.05%) 🟩-3,342k (- 3.10%) 104,426k 104,667k p=0.000 n=12
Memory Allocs 2,196,935 (± 0.01%) 2,204,419 (± 0.01%) +7,485 (+ 0.34%) 2,204,056 2,204,821 p=0.000 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.032s (± 2.62%) 0.034s (± 3.26%) 🔻+0.003s (+ 9.26%) 0.032s 0.037s p=0.000 n=12
Bind Time 0.011s (± 5.97%) 0.011s (± 4.84%) ~ 0.010s 0.013s p=0.439 n=12
Check Time 0.335s (± 0.74%) 0.330s (± 0.63%) -0.005s (- 1.49%) 0.326s 0.336s p=0.004 n=12
Emit Time 0.209s (± 1.41%) 0.207s (± 1.83%) ~ 0.195s 0.216s p=0.898 n=12
Total Time 0.592s (± 0.69%) 0.588s (± 0.78%) ~ 0.574s 0.600s p=0.138 n=12
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=12
Symbols 586,506 (± 0.02%) 586,509 (± 0.02%) ~ 586,332 586,753 p=0.787 n=12
Types 241,692 (± 0.00%) 241,692 (± 0.00%) ~ 241,690 241,693 p=0.808 n=12
Memory Used 551,145k (± 0.02%) 525,044k (± 0.03%) 🟩-26,101k (- 4.74%) 524,749k 525,483k p=0.000 n=12
Memory Allocs 13,075,392 (± 0.08%) 13,102,188 (± 0.01%) +26,795 (+ 0.20%) 13,097,921 13,106,951 p=0.000 n=12
Config Time 0.017s (± 1.91%) 0.017s (± 2.83%) ~ 0.016s 0.018s p=0.433 n=12
Parse Time 0.187s (± 2.53%) 0.198s (± 2.79%) 🔻+0.011s (+ 5.69%) 0.187s 0.216s p=0.006 n=12
Bind Time 0.058s (±12.49%) 0.058s (±12.14%) ~ 0.049s 0.081s p=0.252 n=12
Check Time 0s 0s ~ ~ ~ p=1.000 n=12
Emit Time 1.184s (± 1.08%) 1.131s (± 1.98%) 🟩-0.053s (- 4.47%) 1.087s 1.211s p=0.001 n=12
Total Time 1.459s (± 0.70%) 1.419s (± 1.28%) -0.040s (- 2.73%) 1.382s 1.485s p=0.001 n=12
arktype - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 685,943 685,943 ~ ~ ~ p=1.000 n=12
Types 939,490 939,490 ~ ~ ~ p=1.000 n=12
Memory Used 532,496k (± 0.01%) 505,231k (± 0.02%) 🟩-27,265k (- 5.12%) 504,992k 505,490k p=0.000 n=12
Memory Allocs 12,771,085 (± 0.01%) 12,790,959 (± 0.01%) +19,874 (+ 0.16%) 12,787,982 12,796,340 p=0.000 n=12
Config Time 0.002s 0.002s ~ ~ ~ p=1.000 n=12
Parse Time 0.058s (± 4.65%) 0.062s (± 4.80%) ~ 0.056s 0.071s p=0.100 n=12
Bind Time 0.019s (±11.13%) 0.018s (± 6.73%) ~ 0.016s 0.022s p=0.204 n=12
Check Time 1.370s (± 0.48%) 1.361s (± 0.67%) -0.010s (- 0.70%) 1.342s 1.399s p=0.031 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 1.490s (± 0.69%) 1.480s (± 0.55%) ~ 1.463s 1.510s p=0.155 n=12
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=12
Symbols 3,784,027 3,784,027 ~ ~ ~ p=1.000 n=12
Types 1,355,982 1,355,982 ~ ~ ~ p=1.000 n=12
Memory Used 2,198,656k (± 0.09%) 1,964,084k (± 0.06%) 🟩-234,572k (-10.67%) 1,960,757k 1,967,363k p=0.000 n=12
Memory Allocs 26,481,438 (± 0.07%) 26,470,668 (± 0.07%) ~ 26,439,521 26,527,980 p=0.347 n=12
Config Time 0.014s (± 2.00%) 0.014s (± 1.29%) ~ 0.014s 0.015s p=0.590 n=12
Parse Time 0.509s (± 4.14%) 0.509s (± 3.45%) ~ 0.448s 0.556s p=1.000 n=12
Bind Time 0.001s (±23.23%) 0.001s (±23.23%) ~ 0.001s 0.002s p=1.000 n=12
Check Time 4.942s (± 1.14%) 4.224s (± 0.30%) 🟩-0.718s (-14.53%) 4.181s 4.264s p=0.000 n=12
Emit Time 0.380s (± 5.23%) 0.411s (± 5.04%) ~ 0.382s 0.468s p=0.192 n=12
Total Time 6.660s (± 0.78%) 5.951s (± 0.57%) 🟩-0.709s (-10.65%) 5.869s 6.026s p=0.000 n=12
sentry - native
Errors 2 2 ~ ~ ~ p=1.000 n=12
Symbols 4,793,249 4,793,249 ~ ~ ~ p=1.000 n=12
Types 2,607,051 2,607,051 ~ ~ ~ p=1.000 n=12
Memory Used 3,204,868k (± 0.05%) 2,994,605k (± 0.04%) 🟩-210,263k (- 6.56%) 2,992,379k 2,997,793k p=0.000 n=12
Memory Allocs 75,280,520 (± 0.07%) 75,192,112 (± 0.13%) ~ 75,038,578 75,567,371 p=0.068 n=12
Config Time 0.044s (± 0.64%) 0.044s (± 0.73%) ~ 0.044s 0.045s p=0.667 n=12
Parse Time 0.705s (± 2.74%) 0.770s (± 3.66%) 🔻+0.065s (+ 9.24%) 0.712s 0.860s p=0.000 n=12
Bind Time 0.208s (±12.61%) 0.216s (±13.94%) ~ 0.162s 0.283s p=0.832 n=12
Check Time 9.296s (± 0.58%) 8.992s (± 0.79%) 🟩-0.304s (- 3.27%) 8.877s 9.276s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 10.312s (± 0.53%) 10.086s (± 0.81%) -0.226s (- 2.19%) 9.889s 10.305s p=0.000 n=12
social-app - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,883,075 1,883,075 ~ ~ ~ p=1.000 n=12
Types 1,158,171 1,158,171 ~ ~ ~ p=1.000 n=12
Memory Used 1,056,372k (± 0.02%) 998,181k (± 0.02%) 🟩-58,191k (- 5.51%) 997,726k 998,957k p=0.000 n=12
Memory Allocs 13,547,818 (± 0.09%) 13,580,518 (± 0.15%) +32,701 (+ 0.24%) 13,539,027 13,634,392 p=0.005 n=12
Config Time 0.015s (± 3.34%) 0.015s (± 1.93%) ~ 0.014s 0.015s p=1.000 n=12
Parse Time 0.242s (± 1.99%) 0.262s (± 3.70%) 🔻+0.020s (+ 8.08%) 0.239s 0.286s p=0.001 n=12
Bind Time 0.061s (±14.16%) 0.055s (±12.13%) ~ 0.046s 0.079s p=0.212 n=12
Check Time 2.174s (± 0.39%) 2.117s (± 0.53%) -0.056s (- 2.60%) 2.093s 2.145s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 2.514s (± 0.60%) 2.468s (± 0.57%) -0.046s (- 1.81%) 2.428s 2.503s p=0.000 n=12
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 1,184,976 1,184,976 ~ ~ ~ p=1.000 n=12
Types 438,967 438,967 ~ ~ ~ p=1.000 n=12
Memory Used 1,258,898k (± 0.21%) 1,189,716k (± 0.12%) 🟩-69,181k (- 5.50%) 1,184,788k 1,191,926k p=0.000 n=12
Memory Allocs 76,965,702 (± 0.18%) 76,877,694 (± 0.01%) ~ 76,856,248 76,922,588 p=0.478 n=12
Config Time 0.004s (± 9.48%) 0.008s (±14.56%) 🔻+0.004s (+97.92%) 0.005s 0.011s p=0.000 n=12
Parse Time 0.182s (± 1.90%) 0.201s (± 2.59%) 🔻+0.019s (+10.60%) 0.188s 0.220s p=0.000 n=12
Bind Time 0.000s 0.000s (±217.90%) ~ 0.000s 0.001s p=1.000 n=12
Check Time 1.179s (± 0.45%) 1.154s (± 0.28%) -0.025s (- 2.12%) 1.144s 1.166s p=0.000 n=12
Emit Time 0.213s (± 2.88%) 0.200s (± 0.86%) 🟩-0.013s (- 5.99%) 0.196s 0.205s p=0.000 n=12
Total Time 13.923s (± 0.58%) 13.823s (± 0.55%) ~ 13.572s 13.987s p=0.081 n=12
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 263,513 263,513 ~ ~ ~ p=1.000 n=12
Types 196,118 196,118 ~ ~ ~ p=1.000 n=12
Memory Used 236,110k (± 0.03%) 226,677k (± 0.02%) 🟩-9,434k (- 4.00%) 226,538k 226,812k p=0.000 n=12
Memory Allocs 4,287,553 (± 0.01%) 4,305,632 (± 0.01%) +18,080 (+ 0.42%) 4,304,328 4,307,081 p=0.000 n=12
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=12
Parse Time 0.073s (± 3.98%) 0.086s (± 4.60%) 🔻+0.013s (+17.27%) 0.076s 0.096s p=0.000 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 0.634s (± 0.80%) 0.618s (± 0.66%) -0.015s (- 2.43%) 0.610s 0.629s p=0.000 n=12
Emit Time 0.101s (± 2.27%) 0.097s (± 3.18%) ~ 0.089s 0.107s p=0.086 n=12
Total Time 0.847s (± 0.89%) 0.839s (± 0.71%) ~ 0.828s 0.857s p=0.070 n=12
t3code-server - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 4,350,705 4,350,705 ~ ~ ~ p=1.000 n=12
Types 3,040,691 3,040,691 ~ ~ ~ p=1.000 n=12
Memory Used 2,609,766k (± 0.03%) 2,493,633k (± 0.03%) 🟩-116,133k (- 4.45%) 2,492,512k 2,495,860k p=0.000 n=12
Memory Allocs 37,327,195 (± 0.07%) 37,294,324 (± 0.04%) -32,871 (- 0.09%) 37,265,752 37,325,736 p=0.039 n=12
Config Time 0.006s (± 3.97%) 0.006s (± 4.55%) ~ 0.006s 0.007s p=1.000 n=12
Parse Time 0.454s (± 1.83%) 0.463s (± 2.41%) ~ 0.433s 0.497s p=0.193 n=12
Bind Time 0.159s (± 9.68%) 0.160s (±10.00%) ~ 0.130s 0.197s p=0.810 n=12
Check Time 13.214s (± 0.56%) 13.286s (± 0.42%) ~ 13.181s 13.460s p=0.060 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 13.850s (± 0.53%) 13.933s (± 0.40%) +0.082s (+ 0.59%) 13.836s 14.072s p=0.035 n=12
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=12
Symbols 231,617 231,617 ~ ~ ~ p=1.000 n=12
Types 181,196 181,196 ~ ~ ~ p=1.000 n=12
Memory Used 203,349k (± 0.01%) 195,183k (± 0.01%) 🟩-8,166k (- 4.02%) 195,111k 195,290k p=0.000 n=12
Memory Allocs 1,358,076 (± 0.01%) 1,374,003 (± 0.02%) +15,928 (+ 1.17%) 1,373,445 1,374,652 p=0.000 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.065s (± 3.80%) 0.069s (± 4.10%) 🔻+0.004s (+ 6.41%) 0.061s 0.076s p=0.034 n=12
Bind Time 0.028s (± 5.21%) 0.027s (± 6.34%) ~ 0.023s 0.032s p=0.081 n=12
Check Time 0.456s (± 0.93%) 0.447s (± 1.00%) -0.009s (- 1.97%) 0.440s 0.465s p=0.001 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 0.560s (± 1.11%) 0.552s (± 0.51%) -0.008s (- 1.40%) 0.548s 0.560s p=0.018 n=12
vscode - native
Errors 10 10 ~ ~ ~ p=1.000 n=12
Symbols 7,287,110 7,287,110 ~ ~ ~ p=1.000 n=12
Types 4,289,787 4,289,787 ~ ~ ~ p=1.000 n=12
Memory Used 5,410,835k (± 0.03%) 5,127,908k (± 0.02%) 🟩-282,927k (- 5.23%) 5,126,030k 5,131,041k p=0.000 n=12
Memory Allocs 62,639,518 (± 0.01%) 62,670,880 (± 0.02%) +31,362 (+ 0.05%) 62,652,098 62,717,843 p=0.000 n=12
Config Time 0.068s (± 0.60%) 0.068s (± 0.83%) ~ 0.067s 0.070s p=0.479 n=12
Parse Time 1.277s (± 1.76%) 1.376s (± 2.78%) 🔻+0.099s (+ 7.73%) 1.319s 1.528s p=0.000 n=12
Bind Time 0.426s (±10.46%) 0.394s (± 7.97%) 🟩-0.032s (- 7.42%) 0.353s 0.529s p=0.003 n=12
Check Time 11.432s (± 0.40%) 11.406s (± 0.65%) ~ 11.239s 11.703s p=0.443 n=12
Emit Time 3.903s (± 4.72%) 3.923s (± 4.87%) ~ 3.555s 4.378s p=0.920 n=12
Total Time 17.177s (± 1.11%) 17.239s (± 1.12%) ~ 16.869s 17.756s p=0.641 n=12
webpack - native
Errors 619 619 ~ ~ ~ p=1.000 n=12
Symbols 916,787 916,787 ~ ~ ~ p=1.000 n=12
Types 636,816 636,816 ~ ~ ~ p=1.000 n=12
Memory Used 742,328k (± 0.02%) 707,441k (± 0.02%) 🟩-34,888k (- 4.70%) 707,176k 707,909k p=0.000 n=12
Memory Allocs 6,528,238 (± 0.01%) 6,561,273 (± 0.01%) +33,035 (+ 0.51%) 6,559,269 6,562,743 p=0.000 n=12
Config Time 0.007s (± 3.42%) 0.007s ~ ~ ~ p=0.478 n=12
Parse Time 0.201s (± 3.80%) 0.219s (± 3.75%) 🔻+0.018s (+ 9.01%) 0.201s 0.242s p=0.004 n=12
Bind Time 0.067s (±13.37%) 0.069s (±12.88%) ~ 0.051s 0.090s p=1.000 n=12
Check Time 1.525s (± 0.58%) 1.498s (± 0.43%) -0.027s (- 1.80%) 1.479s 1.512s p=0.000 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 1.842s (± 0.58%) 1.829s (± 0.73%) ~ 1.793s 1.862s p=0.193 n=12
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=12
Symbols 640,494 640,494 ~ ~ ~ p=1.000 n=12
Types 387,992 387,992 ~ ~ ~ p=1.000 n=12
Memory Used 386,584k (± 0.02%) 364,286k (± 0.04%) 🟩-22,298k (- 5.77%) 364,037k 364,922k p=0.000 n=12
Memory Allocs 3,991,311 (± 0.08%) 4,017,504 (± 0.07%) +26,194 (+ 0.66%) 4,008,393 4,023,916 p=0.000 n=12
Config Time 0.002s 0.002s ~ ~ ~ p=1.000 n=12
Parse Time 0.089s (± 2.93%) 0.096s (± 3.25%) 🔻+0.006s (+ 7.20%) 0.087s 0.106s p=0.003 n=12
Bind Time 0.027s (± 9.71%) 0.026s (±11.77%) ~ 0.021s 0.034s p=0.232 n=12
Check Time 0.617s (± 0.67%) 0.605s (± 0.78%) -0.012s (- 2.02%) 0.593s 0.620s p=0.001 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 0.743s (± 0.72%) 0.735s (± 0.70%) ~ 0.719s 0.751s p=0.053 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

@jakebailey Jake Bailey (jakebailey) added the Domain: Performance Reports of unusually slow behavior label Oct 27, 2026
@jakebailey

Copy link
Copy Markdown
Member Author

Hmm, will have to see if that perf slowdown is still real (I thought it was fixed) and if it can be improved.

Interned IDs stay 32 bits, but every struct and map slot that holds a
SymbolName aligns its neighbors to 8 bytes, so the 32-bit name was
padded to 8 bytes anyway: Identifier.Text, symbolData.name, symbol
table map slots, and the checker types that hold names all had a 4-byte
hole after it. Widening the field costs nothing, and the spare bits
leave room to encode names that never need to enter the table.

tsc --extendedDiagnostics memory, median of 3 runs:

                  32-bit       64-bit
self-build-src  224,394K     224,449K   +0.02%
xstate          268,337K     268,372K   +0.01%
mui-docs      1,761,690K   1,761,642K   -0.00%
vscode        2,829,089K   2,826,766K   -0.08%
@jakebailey Jake Bailey (jakebailey) changed the title Intern symbol names as 32-bit IDs Intern symbol names as pointer-free IDs Oct 28, 2026
# Conflicts:
#	tsc/internal/api/session_symbolresponse_test.go
#	tsc/internal/ast/symbol.go
#	tsc/internal/ast/symbol_test.go
#	tsc/internal/binder/binder.go
#	tsc/internal/checker/checker.go
#	tsc/internal/checker/inference.go
#	tsc/internal/checker/nodebuilderimpl.go
#	tsc/internal/checker/services.go
#	tsc/internal/checker/symbolaccessibility.go
#	tsc/internal/checker/types_test.go
#	tsc/internal/checker/utilities.go
#	tsc/internal/ls/autoimport/extract.go
#	tsc/internal/printer/namegenerator.go
#	tsc/internal/transformers/declarations/transform.go
@jakebailey

Copy link
Copy Markdown
Member Author

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

testing 64 bit before another refactor

@typescript-automation

typescript-automation Bot commented Oct 28, 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=20
Symbols 88,466 88,466 ~ ~ ~ p=1.000 n=20
Types 79,607 79,607 ~ ~ ~ p=1.000 n=20
Memory Used 104,144k (± 0.02%) 102,395k (± 0.03%) -1,748k (- 1.68%) 102,271k 102,511k p=0.000 n=20
Memory Allocs 2,200,690 (± 0.01%) 2,208,334 (± 0.00%) +7,645 (+ 0.35%) 2,208,028 2,208,761 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.022s (± 2.82%) 0.023s (± 1.87%) 🔻+0.002s (+ 8.08%) 0.022s 0.025s p=0.000 n=20
Bind Time 0.009s (± 5.03%) 0.008s (± 3.79%) ~ 0.007s 0.009s p=0.714 n=20
Check Time 0.225s (± 0.62%) 0.216s (± 0.59%) 🟩-0.009s (- 4.02%) 0.211s 0.222s p=0.000 n=20
Emit Time 0.153s (± 1.10%) 0.153s (± 1.32%) ~ 0.147s 0.160s p=0.762 n=20
Total Time 0.412s (± 0.49%) 0.404s (± 0.62%) -0.008s (- 1.89%) 0.395s 0.412s p=0.000 n=20
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=20
Symbols 586,572 (± 0.02%) 586,533 (± 0.01%) ~ 586,255 586,864 p=0.583 n=20
Types 241,692 (± 0.00%) 241,693 (± 0.00%) ~ 241,690 241,703 p=0.654 n=20
Memory Used 518,054k (± 0.02%) 504,861k (± 0.01%) -13,193k (- 2.55%) 504,664k 505,143k p=0.000 n=20
Memory Allocs 13,119,563 (± 0.04%) 13,149,687 (± 0.03%) +30,124 (+ 0.23%) 13,140,438 13,171,224 p=0.000 n=20
Config Time 0.009s (± 7.96%) 0.009s (± 2.18%) ~ 0.008s 0.009s p=0.301 n=20
Parse Time 0.137s (± 3.69%) 0.144s (± 2.92%) 🔻+0.007s (+ 5.30%) 0.122s 0.165s p=0.007 n=20
Bind Time 0.041s (± 2.57%) 0.042s (± 9.52%) +0.001s (+ 2.59%) 0.036s 0.064s p=0.010 n=20
Check Time 0s 0s ~ ~ ~ p=1.000 n=20
Emit Time 0.928s (± 1.01%) 0.923s (± 1.27%) ~ 0.884s 0.995s p=0.448 n=20
Total Time 1.125s (± 1.05%) 1.127s (± 1.02%) ~ 1.093s 1.195s p=0.984 n=20
arktype - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 685,943 685,943 ~ ~ ~ p=1.000 n=20
Types 939,490 939,490 ~ ~ ~ p=1.000 n=20
Memory Used 497,262k (± 0.01%) 484,539k (± 0.01%) -12,724k (- 2.56%) 484,337k 484,773k p=0.000 n=20
Memory Allocs 12,805,329 (± 0.01%) 12,824,632 (± 0.01%) +19,303 (+ 0.15%) 12,820,569 12,832,068 p=0.000 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.041s (± 2.84%) 0.046s (± 4.06%) 🔻+0.005s (+13.15%) 0.039s 0.053s p=0.000 n=20
Bind Time 0.013s (± 7.82%) 0.012s (± 7.40%) ~ 0.011s 0.019s p=0.117 n=20
Check Time 0.998s (± 0.59%) 0.991s (± 0.65%) ~ 0.963s 1.009s p=0.250 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.083s (± 0.48%) 1.080s (± 0.53%) ~ 1.057s 1.099s p=0.551 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,841k (± 0.02%) 27,370k (± 0.02%) -471k (- 1.69%) 27,350k 27,387k p=0.000 n=20
Memory Allocs 323,287 (± 0.02%) 327,420 (± 0.05%) +4,133 (+ 1.28%) 326,934 328,122 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.010s (± 4.91%) 0.011s (± 4.92%) ~ 0.009s 0.013s p=0.175 n=20
Bind Time 0.003s (±12.84%) 0.003s (±18.60%) ~ 0.002s 0.006s p=0.477 n=20
Check Time 0.009s (± 4.74%) 0.008s (± 5.14%) 🟩-0.001s (- 8.52%) 0.007s 0.009s p=0.009 n=20
Emit Time 0.010s (± 2.84%) 0.010s (± 4.26%) ~ 0.008s 0.011s p=0.681 n=20
Total Time 0.033s (± 2.62%) 0.033s (± 2.52%) ~ 0.030s 0.038s p=0.928 n=20
effect - native
Errors 12 12 ~ ~ ~ p=1.000 n=20
Symbols 1,235,117 1,235,117 ~ ~ ~ p=1.000 n=20
Types 894,115 894,115 ~ ~ ~ p=1.000 n=20
Memory Used 940,460k (± 0.02%) 919,792k (± 0.02%) -20,668k (- 2.20%) 919,068k 920,638k p=0.000 n=20
Memory Allocs 15,752,187 (± 0.02%) 15,775,671 (± 0.02%) +23,484 (+ 0.15%) 15,759,019 15,796,417 p=0.000 n=20
Config Time 0.002s (±16.30%) 0.002s (± 9.93%) ~ 0.002s 0.004s p=0.744 n=20
Parse Time 0.161s (± 3.21%) 0.171s (± 1.75%) 🔻+0.010s (+ 5.96%) 0.159s 0.187s p=0.000 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 1.026s (± 1.49%) 1.011s (± 1.06%) ~ 0.979s 1.068s p=0.080 n=20
Emit Time 0.559s (± 2.57%) 0.549s (± 2.46%) ~ 0.516s 0.637s p=0.239 n=20
Total Time 1.855s (± 1.19%) 1.832s (± 0.94%) ~ 1.776s 1.907s p=0.126 n=20
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=20
Symbols 3,784,027 3,784,027 ~ ~ ~ p=1.000 n=20
Types 1,355,982 1,355,982 ~ ~ ~ p=1.000 n=20
Memory Used 1,835,839k (± 0.08%) 1,775,681k (± 0.08%) 🟩-60,158k (- 3.28%) 1,770,772k 1,781,474k p=0.000 n=20
Memory Allocs 26,727,848 (± 0.06%) 26,720,318 (± 0.05%) ~ 26,662,491 26,764,219 p=0.512 n=20
Config Time 0.008s 0.008s ~ ~ ~ p=1.000 n=20
Parse Time 0.280s (± 2.54%) 0.303s (± 2.83%) 🔻+0.023s (+ 8.03%) 0.266s 0.339s p=0.000 n=20
Bind Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Check Time 3.226s (± 0.51%) 2.918s (± 0.44%) 🟩-0.308s (- 9.55%) 2.871s 2.989s p=0.000 n=20
Emit Time 0.243s (± 0.86%) 0.246s (± 4.11%) ~ 0.233s 0.335s p=0.515 n=20
Total Time 4.232s (± 0.43%) 3.949s (± 0.47%) 🟩-0.283s (- 6.69%) 3.902s 4.051s p=0.000 n=20
sentry - native
Errors 2 2 ~ ~ ~ p=1.000 n=20
Symbols 4,793,249 4,793,249 ~ ~ ~ p=1.000 n=20
Types 2,607,051 2,607,051 ~ ~ ~ p=1.000 n=20
Memory Used 2,881,172k (± 0.03%) 2,815,552k (± 0.05%) -65,619k (- 2.28%) 2,811,760k 2,822,749k p=0.000 n=20
Memory Allocs 75,916,021 (± 0.14%) 75,866,961 (± 0.09%) ~ 75,603,703 76,140,165 p=0.565 n=20
Config Time 0.027s (± 0.86%) 0.027s (± 1.03%) ~ 0.026s 0.028s p=1.000 n=20
Parse Time 0.504s (± 6.22%) 0.544s (± 4.93%) 🔻+0.040s (+ 7.95%) 0.485s 0.717s p=0.004 n=20
Bind Time 0.165s (±10.11%) 0.143s (± 6.43%) ~ 0.132s 0.223s p=0.111 n=20
Check Time 7.142s (± 0.45%) 6.857s (± 0.67%) 🟩-0.285s (- 3.98%) 6.750s 7.069s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 7.893s (± 0.67%) 7.622s (± 0.79%) 🟩-0.270s (- 3.42%) 7.475s 7.995s p=0.000 n=20
social-app - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 1,883,075 1,883,075 ~ ~ ~ p=1.000 n=20
Types 1,158,171 1,158,171 ~ ~ ~ p=1.000 n=20
Memory Used 972,400k (± 0.02%) 951,400k (± 0.02%) -21,000k (- 2.16%) 950,935k 952,161k p=0.000 n=20
Memory Allocs 13,701,051 (± 0.09%) 13,732,721 (± 0.21%) ~ 13,675,119 13,916,353 p=0.076 n=20
Config Time 0.009s (±13.14%) 0.008s (± 2.64%) ~ 0.008s 0.009s p=0.716 n=20
Parse Time 0.192s (± 4.03%) 0.206s (± 2.84%) 🔻+0.014s (+ 7.42%) 0.174s 0.225s p=0.002 n=20
Bind Time 0.047s (± 9.61%) 0.045s (± 8.26%) ~ 0.036s 0.069s p=0.439 n=20
Check Time 1.831s (± 1.07%) 1.779s (± 1.09%) -0.053s (- 2.88%) 1.714s 1.851s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 2.100s (± 1.05%) 2.056s (± 0.97%) -0.044s (- 2.11%) 1.987s 2.132s p=0.004 n=20
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 1,184,976 1,184,976 ~ ~ ~ p=1.000 n=20
Types 438,967 438,967 ~ ~ ~ p=1.000 n=20
Memory Used 1,177,906k (± 0.49%) 1,150,454k (± 0.23%) -27,452k (- 2.33%) 1,139,001k 1,158,287k p=0.000 n=20
Memory Allocs 77,568,085 (± 0.11%) 77,385,952 (± 0.06%) -182,133 (- 0.23%) 77,156,996 77,579,635 p=0.000 n=20
Config Time 0.002s (±15.95%) 0.004s (±12.34%) 🔻+0.002s (+153.33%) 0.002s 0.005s p=0.000 n=20
Parse Time 0.146s (± 1.99%) 0.159s (± 1.78%) 🔻+0.013s (+ 9.04%) 0.147s 0.171s p=0.000 n=20
Bind Time 0.000s 0.000s (±208.60%) ~ 0.000s 0.002s p=1.000 n=20
Check Time 0.881s (± 0.92%) 0.829s (± 0.41%) 🟩-0.051s (- 5.84%) 0.816s 0.844s p=0.000 n=20
Emit Time 0.181s (± 1.86%) 0.171s (± 1.50%) 🟩-0.010s (- 5.38%) 0.163s 0.180s p=0.000 n=20
Total Time 10.653s (± 0.90%) 10.377s (± 0.39%) -0.276s (- 2.59%) 10.238s 10.577s p=0.000 n=20
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 263,513 263,513 ~ ~ ~ p=1.000 n=20
Types 196,118 196,118 ~ ~ ~ p=1.000 n=20
Memory Used 224,602k (± 0.01%) 219,941k (± 0.02%) -4,662k (- 2.08%) 219,754k 220,048k p=0.000 n=20
Memory Allocs 4,304,349 (± 0.00%) 4,322,463 (± 0.01%) +18,114 (+ 0.42%) 4,321,080 4,323,378 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.052s (± 4.21%) 0.058s (± 2.28%) 🔻+0.006s (+11.92%) 0.053s 0.063s p=0.000 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.402s (± 0.74%) 0.390s (± 0.80%) 🟩-0.013s (- 3.19%) 0.378s 0.404s p=0.000 n=20
Emit Time 0.078s (± 2.07%) 0.078s (± 2.29%) ~ 0.070s 0.086s p=0.835 n=20
Total Time 0.562s (± 0.57%) 0.554s (± 0.67%) -0.009s (- 1.51%) 0.540s 0.576s p=0.000 n=20
t3code-server - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 4,350,705 4,350,705 ~ ~ ~ p=1.000 n=20
Types 3,040,691 3,040,691 ~ ~ ~ p=1.000 n=20
Memory Used 2,434,028k (± 0.03%) 2,387,427k (± 0.03%) -46,601k (- 1.91%) 2,385,935k 2,391,313k p=0.000 n=20
Memory Allocs 37,882,259 (± 0.05%) 37,860,566 (± 0.04%) ~ 37,820,036 37,933,920 p=0.114 n=20
Config Time 0.003s 0.003s ~ ~ ~ p=1.000 n=20
Parse Time 0.265s (± 2.13%) 0.280s (± 1.30%) 🔻+0.015s (+ 5.62%) 0.265s 0.297s p=0.000 n=20
Bind Time 0.089s (± 9.05%) 0.084s (± 8.15%) 🟩-0.004s (- 4.68%) 0.075s 0.125s p=0.027 n=20
Check Time 7.758s (± 0.51%) 7.756s (± 0.67%) ~ 7.550s 7.974s p=0.846 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 8.126s (± 0.51%) 8.135s (± 0.63%) ~ 7.917s 8.344s p=0.723 n=20
tanstack-router - native
Errors 1 1 ~ ~ ~ p=1.000 n=20
Symbols 571,760 571,760 ~ ~ ~ p=1.000 n=20
Types 397,693 397,693 ~ ~ ~ p=1.000 n=20
Memory Used 331,435k (± 0.01%) 323,532k (± 0.02%) -7,903k (- 2.38%) 323,355k 323,708k p=0.000 n=20
Memory Allocs 5,092,314 (± 0.05%) 5,109,913 (± 0.11%) +17,599 (+ 0.35%) 5,102,335 5,153,729 p=0.000 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.039s (± 3.15%) 0.045s (± 2.83%) 🔻+0.005s (+13.74%) 0.039s 0.049s p=0.000 n=20
Bind Time 0.012s (± 7.10%) 0.012s (±10.76%) ~ 0.010s 0.019s p=0.374 n=20
Check Time 0.569s (± 0.59%) 0.560s (± 0.73%) -0.008s (- 1.47%) 0.547s 0.578s p=0.001 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.647s (± 0.39%) 0.641s (± 0.62%) -0.007s (- 1.07%) 0.623s 0.655s p=0.007 n=20
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=20
Symbols 231,617 231,617 ~ ~ ~ p=1.000 n=20
Types 181,196 181,196 ~ ~ ~ p=1.000 n=20
Memory Used 193,528k (± 0.01%) 189,431k (± 0.01%) -4,097k (- 2.12%) 189,323k 189,510k p=0.000 n=20
Memory Allocs 1,373,287 (± 0.01%) 1,388,782 (± 0.01%) +15,495 (+ 1.13%) 1,388,123 1,389,346 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.046s (± 7.22%) 0.049s (± 2.57%) 🔻+0.003s (+ 6.43%) 0.044s 0.054s p=0.000 n=20
Bind Time 0.021s (± 7.56%) 0.021s (± 3.83%) ~ 0.018s 0.025s p=0.352 n=20
Check Time 0.316s (± 2.08%) 0.304s (± 1.94%) 🟩-0.012s (- 3.76%) 0.291s 0.346s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.391s (± 2.46%) 0.381s (± 1.56%) -0.010s (- 2.55%) 0.364s 0.419s p=0.038 n=20
vscode - native
Errors 10 10 ~ ~ ~ p=1.000 n=20
Symbols 7,346,337 7,346,337 ~ ~ ~ p=1.000 n=20
Types 4,341,889 4,341,889 ~ ~ ~ p=1.000 n=20
Memory Used 5,118,724k (± 0.01%) 4,964,384k (± 0.02%) 🟩-154,340k (- 3.02%) 4,961,895k 4,968,016k p=0.000 n=20
Memory Allocs 64,521,744 (± 0.02%) 64,566,132 (± 0.01%) +44,388 (+ 0.07%) 64,539,382 64,603,425 p=0.000 n=20
Config Time 0.036s (± 1.02%) 0.036s (± 0.92%) ~ 0.035s 0.038s p=0.150 n=20
Parse Time 0.921s (± 1.54%) 0.973s (± 3.16%) 🔻+0.051s (+ 5.57%) 0.871s 1.125s p=0.010 n=20
Bind Time 0.303s (± 3.58%) 0.357s (± 9.65%) ~ 0.281s 0.482s p=0.344 n=20
Check Time 8.064s (± 0.32%) 7.882s (± 0.53%) -0.182s (- 2.26%) 7.747s 8.000s p=0.000 n=20
Emit Time 3.012s (± 3.41%) 3.197s (± 5.34%) ~ 2.662s 3.621s p=0.262 n=20
Total Time 12.395s (± 0.77%) 12.511s (± 1.13%) ~ 12.014s 12.882s p=0.516 n=20
webpack - native
Errors 619 619 ~ ~ ~ p=1.000 n=20
Symbols 917,690 917,690 ~ ~ ~ p=1.000 n=20
Types 633,379 633,379 ~ ~ ~ p=1.000 n=20
Memory Used 690,232k (± 0.01%) 674,769k (± 0.01%) -15,462k (- 2.24%) 674,354k 675,081k p=0.000 n=20
Memory Allocs 6,594,837 (± 0.02%) 6,638,458 (± 0.11%) +43,621 (+ 0.66%) 6,625,930 6,694,777 p=0.000 n=20
Config Time 0.004s 0.004s ~ ~ ~ p=1.000 n=20
Parse Time 0.148s (± 4.26%) 0.156s (± 3.43%) ~ 0.134s 0.180s p=0.233 n=20
Bind Time 0.049s (±10.95%) 0.043s (± 6.19%) ~ 0.037s 0.056s p=0.111 n=20
Check Time 1.197s (± 0.49%) 1.184s (± 0.58%) -0.013s (- 1.12%) 1.165s 1.218s p=0.002 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.424s (± 0.57%) 1.410s (± 0.65%) -0.013s (- 0.94%) 1.378s 1.460s p=0.017 n=20
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 640,494 640,494 ~ ~ ~ p=1.000 n=20
Types 387,992 387,992 ~ ~ ~ p=1.000 n=20
Memory Used 350,965k (± 0.02%) 342,771k (± 0.02%) -8,194k (- 2.33%) 342,555k 343,073k p=0.000 n=20
Memory Allocs 4,065,496 (± 0.08%) 4,091,845 (± 0.08%) +26,349 (+ 0.65%) 4,076,657 4,109,620 p=0.000 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.061s (± 2.36%) 0.066s (± 2.91%) 🔻+0.005s (+ 7.84%) 0.060s 0.076s p=0.000 n=20
Bind Time 0.022s (± 8.38%) 0.019s (± 9.06%) 🟩-0.003s (-15.06%) 0.017s 0.033s p=0.000 n=20
Check Time 0.434s (± 0.69%) 0.417s (± 0.89%) 🟩-0.017s (- 3.83%) 0.406s 0.433s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.524s (± 0.81%) 0.508s (± 0.83%) -0.016s (- 3.00%) 0.494s 0.526s p=0.000 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

@jakebailey

Copy link
Copy Markdown
Member Author

So, this makes it look like 64 bit is worse, but it's actually not; the delta just got smaller because the symbol table layout change did most of the work that this PR did to reduce the memory requirements of tables.

If changed back to 32, nothing changes.

The checker and binder synthesize names with unbounded numeric parts:
private names, unique ES symbols, module patterns, and the
"(auto@N)"/"(generated@N)" names. Interning each of these grows the
table without bound in a long-lived process, since interned names are
never freed. The spare bits of the 64-bit SymbolName can hold them
directly instead: a 3-bit kind, a 35-bit number, and the 26-bit ID of
the interned base text. These names are never interned, and two names
are equal exactly when their texts are equal, because MakeSymbolName
parses derived-shaped text back into its derived form.

Interned text that starts with the internal "\xFE" prefix is tagged
with its own kind, and records the byte after the prefix. This makes
IsInternal, IsPrivateName, IsLateBoundName and IsReservedMemberName
bit tests rather than lookups of the text.

The fixed names are now iota constants generated from a single list
(npx hereby generate:symbolnames), so they are compile-time constants
and are seeded into the table in order. The zero value is the empty
name, so an unset SymbolName needs no special handling, and String is
the only way to get the text.
@jakebailey

Copy link
Copy Markdown
Member Author

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

@typescript-automation

typescript-automation Bot commented Oct 28, 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 perf run you requested failed. You can check the log here.

@jakebailey

Copy link
Copy Markdown
Member Author

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

@typescript-automation

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

Comment thread tsc/internal/ast/symbolname_derived.go Outdated
//
// bits 61-63: kind (0 for plain interned names)
// bits 26-60: number
// bits 0-25: interned ID of the base text (always an interned name)

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 need to think harder about this; basically this means names are only 26 bits which is even worse than 32! Need to decide on a tradeoff

@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,176k (± 0.02%) 102,389k (± 0.03%) -1,787k (- 1.72%) 102,267k 102,512k p=0.000 n=20
Memory Allocs 2,200,777 (± 0.00%) 2,161,811 (± 0.01%) -38,966 (- 1.77%) 2,161,404 2,162,295 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.023s (± 2.56%) 0.025s (± 2.49%) 🔻+0.002s (+ 9.33%) 0.022s 0.027s p=0.000 n=20
Bind Time 0.009s (± 3.80%) 0.009s (± 4.84%) 🟩-0.001s (- 6.56%) 0.007s 0.010s p=0.044 n=20
Check Time 0.236s (± 0.66%) 0.230s (± 0.64%) -0.006s (- 2.62%) 0.225s 0.236s p=0.000 n=20
Emit Time 0.162s (± 0.96%) 0.159s (± 0.99%) -0.004s (- 2.25%) 0.154s 0.165s p=0.002 n=20
Total Time 0.434s (± 0.50%) 0.425s (± 0.37%) -0.009s (- 2.00%) 0.418s 0.431s p=0.000 n=20
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=20
Symbols 586,580 (± 0.01%) 586,522 (± 0.02%) ~ 585,890 586,823 p=0.351 n=20
Types 241,692 (± 0.00%) 241,694 (± 0.00%) ~ 241,690 241,708 p=0.204 n=20
Memory Used 517,979k (± 0.01%) 504,780k (± 0.02%) -13,199k (- 2.55%) 504,455k 505,172k p=0.000 n=20
Memory Allocs 13,114,775 (± 0.02%) 13,151,243 (± 0.06%) +36,468 (+ 0.28%) 13,137,217 13,214,179 p=0.000 n=20
Config Time 0.009s (± 1.87%) 0.009s (± 1.58%) ~ 0.009s 0.010s p=1.000 n=20
Parse Time 0.138s (± 4.22%) 0.155s (± 3.35%) 🔻+0.017s (+12.65%) 0.140s 0.180s p=0.000 n=20
Bind Time 0.043s (± 6.50%) 0.041s (± 8.80%) 🟩-0.002s (- 3.86%) 0.035s 0.065s p=0.005 n=20
Check Time 0s 0s ~ ~ ~ p=1.000 n=20
Emit Time 0.945s (± 0.97%) 0.925s (± 1.07%) -0.020s (- 2.10%) 0.890s 0.979s p=0.003 n=20
Total Time 1.146s (± 0.99%) 1.140s (± 0.74%) ~ 1.109s 1.181s p=0.402 n=20
arktype - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 685,943 685,943 ~ ~ ~ p=1.000 n=20
Types 939,490 939,490 ~ ~ ~ p=1.000 n=20
Memory Used 497,318k (± 0.01%) 484,541k (± 0.01%) -12,777k (- 2.57%) 484,367k 484,822k p=0.000 n=20
Memory Allocs 12,805,015 (± 0.02%) 12,825,356 (± 0.01%) +20,342 (+ 0.16%) 12,820,163 12,831,892 p=0.000 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.044s (± 4.16%) 0.050s (± 5.46%) 🔻+0.006s (+13.12%) 0.044s 0.065s p=0.001 n=20
Bind Time 0.014s (± 6.33%) 0.015s (±20.20%) ~ 0.012s 0.038s p=0.799 n=20
Check Time 1.056s (± 1.06%) 1.065s (± 1.55%) ~ 1.009s 1.127s p=0.410 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.145s (± 1.10%) 1.163s (± 1.45%) ~ 1.108s 1.245s p=0.113 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,834k (± 0.02%) 27,371k (± 0.03%) -463k (- 1.66%) 27,344k 27,399k p=0.000 n=20
Memory Allocs 323,462 (± 0.04%) 325,937 (± 0.04%) +2,475 (+ 0.77%) 325,383 326,592 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.011s (± 3.52%) 0.012s (± 2.69%) 🔻+0.001s (+ 6.39%) 0.011s 0.013s p=0.011 n=20
Bind Time 0.004s (± 9.52%) 0.003s (±10.28%) ~ 0.002s 0.005s p=0.120 n=20
Check Time 0.009s (± 5.58%) 0.009s (± 6.78%) ~ 0.007s 0.010s p=0.170 n=20
Emit Time 0.011s (± 4.68%) 0.011s (± 3.92%) ~ 0.009s 0.012s p=0.243 n=20
Total Time 0.035s (± 1.59%) 0.035s (± 1.61%) ~ 0.032s 0.037s p=0.887 n=20
effect - native
Errors 12 12 ~ ~ ~ p=1.000 n=20
Symbols 1,235,117 1,235,117 ~ ~ ~ p=1.000 n=20
Types 894,115 894,115 ~ ~ ~ p=1.000 n=20
Memory Used 940,520k (± 0.02%) 919,836k (± 0.02%) -20,684k (- 2.20%) 919,309k 920,677k p=0.000 n=20
Memory Allocs 15,753,229 (± 0.01%) 15,784,723 (± 0.06%) +31,495 (+ 0.20%) 15,766,518 15,834,443 p=0.000 n=20
Config Time 0.002s (± 5.09%) 0.002s (± 5.09%) ~ 0.002s 0.003s p=1.000 n=20
Parse Time 0.169s (± 2.37%) 0.182s (± 4.48%) 🔻+0.013s (+ 7.91%) 0.165s 0.242s p=0.002 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 1.037s (± 0.79%) 1.022s (± 1.18%) -0.014s (- 1.39%) 0.988s 1.082s p=0.018 n=20
Emit Time 0.566s (± 1.72%) 0.568s (± 2.35%) ~ 0.513s 0.642s p=0.784 n=20
Total Time 1.876s (± 0.66%) 1.875s (± 1.15%) ~ 1.810s 1.997s p=0.490 n=20
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=20
Symbols 3,784,027 3,784,027 ~ ~ ~ p=1.000 n=20
Types 1,355,982 1,355,982 ~ ~ ~ p=1.000 n=20
Memory Used 1,835,478k (± 0.08%) 1,776,190k (± 0.06%) 🟩-59,288k (- 3.23%) 1,771,831k 1,781,450k p=0.000 n=20
Memory Allocs 26,743,513 (± 0.08%) 26,719,682 (± 0.06%) ~ 26,671,042 26,793,807 p=0.096 n=20
Config Time 0.009s (± 1.93%) 0.009s (± 2.82%) 🟩-0.000s (- 3.95%) 0.008s 0.009s p=0.041 n=20
Parse Time 0.303s (± 2.65%) 0.316s (± 2.33%) +0.012s (+ 3.99%) 0.283s 0.342s p=0.032 n=20
Bind Time 0.001s (±27.21%) 0.001s ~ ~ ~ p=1.000 n=20
Check Time 3.391s (± 0.88%) 3.028s (± 1.50%) 🟩-0.363s (-10.70%) 2.874s 3.158s p=0.000 n=20
Emit Time 0.261s (± 1.37%) 0.257s (± 1.71%) -0.005s (- 1.82%) 0.239s 0.278s p=0.035 n=20
Total Time 4.471s (± 0.99%) 4.108s (± 1.31%) 🟩-0.363s (- 8.12%) 3.908s 4.259s p=0.000 n=20
sentry - native
Errors 2 2 ~ ~ ~ p=1.000 n=20
Symbols 4,793,249 4,793,249 ~ ~ ~ p=1.000 n=20
Types 2,607,051 2,607,051 ~ ~ ~ p=1.000 n=20
Memory Used 2,881,749k (± 0.05%) 2,816,128k (± 0.03%) -65,621k (- 2.28%) 2,812,334k 2,820,848k p=0.000 n=20
Memory Allocs 75,932,577 (± 0.07%) 75,837,494 (± 0.06%) -95,084 (- 0.13%) 75,683,430 76,086,028 p=0.009 n=20
Config Time 0.025s (± 0.69%) 0.025s (± 2.05%) ~ 0.024s 0.027s p=0.621 n=20
Parse Time 0.477s (± 4.83%) 0.540s (± 4.29%) 🔻+0.063s (+13.22%) 0.495s 0.666s p=0.000 n=20
Bind Time 0.163s (± 9.68%) 0.139s (± 4.83%) 🟩-0.024s (-14.64%) 0.128s 0.192s p=0.004 n=20
Check Time 6.847s (± 0.42%) 6.686s (± 1.29%) -0.162s (- 2.36%) 6.534s 7.054s p=0.005 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 7.566s (± 0.42%) 7.438s (± 1.30%) -0.128s (- 1.69%) 7.234s 7.831s p=0.007 n=20
social-app - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 1,883,075 1,883,075 ~ ~ ~ p=1.000 n=20
Types 1,158,171 1,158,171 ~ ~ ~ p=1.000 n=20
Memory Used 972,364k (± 0.01%) 951,555k (± 0.02%) -20,809k (- 2.14%) 950,758k 952,244k p=0.000 n=20
Memory Allocs 13,717,697 (± 0.14%) 13,716,028 (± 0.09%) ~ 13,673,053 13,774,106 p=0.758 n=20
Config Time 0.008s 0.008s (± 1.31%) ~ 0.007s 0.008s p=1.000 n=20
Parse Time 0.168s (± 4.59%) 0.173s (± 2.78%) +0.006s (+ 3.52%) 0.161s 0.202s p=0.045 n=20
Bind Time 0.046s (±10.42%) 0.042s (± 9.30%) 🟩-0.004s (- 8.43%) 0.036s 0.065s p=0.024 n=20
Check Time 1.629s (± 1.00%) 1.561s (± 1.18%) 🟩-0.068s (- 4.15%) 1.520s 1.679s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.869s (± 1.06%) 1.802s (± 1.18%) 🟩-0.068s (- 3.62%) 1.756s 1.945s p=0.000 n=20
strada-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 1,184,976 1,184,976 ~ ~ ~ p=1.000 n=20
Types 438,967 438,967 ~ ~ ~ p=1.000 n=20
Memory Used 1,169,536k (± 0.31%) 1,150,249k (± 0.24%) -19,287k (- 1.65%) 1,135,475k 1,158,334k p=0.000 n=20
Memory Allocs 77,398,635 (± 0.14%) 77,349,594 (± 0.05%) ~ 77,156,504 77,445,730 p=0.086 n=20
Config Time 0.002s (±14.47%) 0.004s (±13.53%) 🔻+0.002s (+102.56%) 0.002s 0.006s p=0.000 n=20
Parse Time 0.145s (± 1.02%) 0.152s (± 1.05%) 🔻+0.007s (+ 5.01%) 0.144s 0.156s p=0.000 n=20
Bind Time 0.000s 0.000s (±208.60%) ~ 0.000s 0.003s p=1.000 n=20
Check Time 0.848s (± 0.50%) 0.801s (± 0.35%) 🟩-0.046s (- 5.48%) 0.792s 0.812s p=0.000 n=20
Emit Time 0.184s (± 1.97%) 0.175s (± 1.26%) 🟩-0.009s (- 4.67%) 0.165s 0.182s p=0.000 n=20
Total Time 10.325s (± 0.50%) 10.062s (± 0.40%) -0.263s (- 2.55%) 9.912s 10.245s p=0.000 n=20
strada-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 263,513 263,513 ~ ~ ~ p=1.000 n=20
Types 196,118 196,118 ~ ~ ~ p=1.000 n=20
Memory Used 224,610k (± 0.03%) 219,895k (± 0.02%) -4,715k (- 2.10%) 219,700k 220,022k p=0.000 n=20
Memory Allocs 4,304,125 (± 0.00%) 4,322,156 (± 0.01%) +18,032 (+ 0.42%) 4,320,571 4,322,967 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.052s (± 1.98%) 0.061s (± 2.37%) 🔻+0.009s (+17.39%) 0.055s 0.066s p=0.000 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.419s (± 0.66%) 0.410s (± 0.52%) -0.009s (- 2.04%) 0.402s 0.418s p=0.000 n=20
Emit Time 0.080s (± 2.29%) 0.079s (± 2.42%) ~ 0.073s 0.088s p=0.206 n=20
Total Time 0.580s (± 0.60%) 0.579s (± 0.56%) ~ 0.568s 0.591s p=0.569 n=20
t3code-server - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 4,350,705 4,350,705 ~ ~ ~ p=1.000 n=20
Types 3,040,691 3,040,691 ~ ~ ~ p=1.000 n=20
Memory Used 2,433,697k (± 0.03%) 2,387,302k (± 0.03%) -46,394k (- 1.91%) 2,384,892k 2,391,907k p=0.000 n=20
Memory Allocs 37,884,968 (± 0.06%) 37,858,107 (± 0.04%) ~ 37,809,996 37,940,795 p=0.068 n=20
Config Time 0.003s 0.003s ~ ~ ~ p=1.000 n=20
Parse Time 0.261s (± 1.77%) 0.270s (± 2.09%) +0.009s (+ 3.33%) 0.253s 0.295s p=0.020 n=20
Bind Time 0.081s (± 3.78%) 0.082s (± 8.16%) +0.001s (+ 1.30%) 0.071s 0.119s p=0.020 n=20
Check Time 7.597s (± 0.50%) 7.587s (± 0.47%) ~ 7.486s 7.723s p=0.683 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 7.952s (± 0.50%) 7.952s (± 0.46%) ~ 7.852s 8.098s p=0.984 n=20
tanstack-router - native
Errors 1 1 ~ ~ ~ p=1.000 n=20
Symbols 571,760 571,760 ~ ~ ~ p=1.000 n=20
Types 397,693 397,693 ~ ~ ~ p=1.000 n=20
Memory Used 331,407k (± 0.01%) 323,497k (± 0.01%) -7,910k (- 2.39%) 323,378k 323,686k p=0.000 n=20
Memory Allocs 5,092,300 (± 0.05%) 5,118,243 (± 0.25%) +25,943 (+ 0.51%) 5,095,660 5,205,729 p=0.000 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.044s (± 3.94%) 0.050s (± 6.34%) 🔻+0.006s (+12.78%) 0.039s 0.071s p=0.002 n=20
Bind Time 0.015s (±10.89%) 0.014s (± 9.62%) ~ 0.011s 0.022s p=0.324 n=20
Check Time 0.625s (± 1.36%) 0.619s (± 1.46%) ~ 0.589s 0.660s p=0.245 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.713s (± 1.20%) 0.710s (± 1.57%) ~ 0.675s 0.756s p=0.664 n=20
ts-pre-modules - native
Errors 87 87 ~ ~ ~ p=1.000 n=20
Symbols 231,617 231,617 ~ ~ ~ p=1.000 n=20
Types 181,196 181,196 ~ ~ ~ p=1.000 n=20
Memory Used 193,560k (± 0.02%) 189,460k (± 0.01%) -4,100k (- 2.12%) 189,354k 189,536k p=0.000 n=20
Memory Allocs 1,373,157 (± 0.01%) 1,388,755 (± 0.01%) +15,598 (+ 1.14%) 1,388,135 1,389,947 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.043s (± 2.75%) 0.048s (± 2.05%) 🔻+0.005s (+12.62%) 0.045s 0.051s p=0.000 n=20
Bind Time 0.021s (± 5.18%) 0.020s (± 3.78%) ~ 0.017s 0.023s p=0.424 n=20
Check Time 0.304s (± 1.12%) 0.301s (± 0.72%) ~ 0.290s 0.310s p=0.233 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.374s (± 0.76%) 0.375s (± 0.66%) ~ 0.363s 0.385s p=0.783 n=20
vscode - native
Errors 10 10 ~ ~ ~ p=1.000 n=20
Symbols 7,383,152 7,383,152 ~ ~ ~ p=1.000 n=20
Types 4,366,356 4,366,356 ~ ~ ~ p=1.000 n=20
Memory Used 5,133,189k (± 0.02%) 4,977,603k (± 0.02%) 🟩-155,586k (- 3.03%) 4,972,253k 4,980,922k p=0.000 n=20
Memory Allocs 64,775,613 (± 0.01%) 64,784,592 (± 0.01%) ~ 64,747,833 64,810,861 p=0.072 n=20
Config Time 0.037s (± 1.76%) 0.036s (± 1.88%) ~ 0.034s 0.039s p=0.409 n=20
Parse Time 0.972s (± 3.04%) 1.058s (± 4.31%) 🔻+0.086s (+ 8.86%) 0.876s 1.259s p=0.005 n=20
Bind Time 0.373s (±10.82%) 0.349s (± 7.99%) ~ 0.286s 0.483s p=0.163 n=20
Check Time 8.040s (± 2.19%) 7.821s (± 2.51%) ~ 7.120s 8.619s p=0.091 n=20
Emit Time 3.226s (± 6.83%) 3.409s (± 5.41%) ~ 2.876s 4.223s p=0.091 n=20
Total Time 12.711s (± 2.61%) 12.742s (± 2.14%) ~ 11.623s 13.958s p=0.499 n=20
webpack - native
Errors 619 619 ~ ~ ~ p=1.000 n=20
Symbols 924,267 924,267 ~ ~ ~ p=1.000 n=20
Types 646,050 646,050 ~ ~ ~ p=1.000 n=20
Memory Used 695,208k (± 0.02%) 679,738k (± 0.01%) -15,470k (- 2.23%) 679,414k 680,138k p=0.000 n=20
Memory Allocs 6,681,717 (± 0.03%) 6,721,798 (± 0.06%) +40,081 (+ 0.60%) 6,710,001 6,742,899 p=0.000 n=20
Config Time 0.004s 0.004s ~ ~ ~ p=1.000 n=20
Parse Time 0.146s (± 3.24%) 0.155s (± 3.96%) 🔻+0.009s (+ 6.11%) 0.129s 0.184s p=0.025 n=20
Bind Time 0.048s (± 8.71%) 0.046s (± 8.77%) ~ 0.039s 0.075s p=0.277 n=20
Check Time 1.369s (± 0.81%) 1.374s (± 1.29%) ~ 1.306s 1.472s p=0.482 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.592s (± 0.94%) 1.605s (± 1.21%) ~ 1.539s 1.694s p=0.358 n=20
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 640,494 640,494 ~ ~ ~ p=1.000 n=20
Types 387,992 387,992 ~ ~ ~ p=1.000 n=20
Memory Used 350,910k (± 0.02%) 342,793k (± 0.02%) -8,117k (- 2.31%) 342,547k 343,138k p=0.000 n=20
Memory Allocs 4,065,606 (± 0.07%) 4,093,530 (± 0.10%) +27,924 (+ 0.69%) 4,083,716 4,121,847 p=0.000 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.059s (± 2.60%) 0.066s (± 2.93%) 🔻+0.007s (+11.41%) 0.060s 0.072s p=0.000 n=20
Bind Time 0.021s (±10.19%) 0.019s (±10.21%) ~ 0.016s 0.030s p=0.208 n=20
Check Time 0.419s (± 0.76%) 0.412s (± 0.96%) -0.007s (- 1.66%) 0.398s 0.427s p=0.023 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.505s (± 0.82%) 0.504s (± 1.05%) ~ 0.486s 0.531s p=0.909 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

The fixed name list lived in a standalone Go program run via
go:generate, separate from the rest of our generated AST code. The
Go generators that remain need to be Go for other reasons; this one
did not, so move the list into tools/scripts/tsc/symbolNames.ts and
emit symbolnames_generated.go from generate-go-ast.ts alongside the
other AST outputs.
Lookups only read the slot tables and chunk pointers, while inserts write
the shard locks, counts, and next ID. The shard stride wasn't a multiple
of 64 and Go only guarantees 8-byte alignment, so neighbouring shards
shared lines, and nextID shared a line with the first chunk pointers.
Inserts on one core kept evicting lines that lookups on every other core
needed. Group the read-mostly fields together, ahead of padded shards.
Each interned name held a heap string in a chunk of string headers, so a
cache hit loaded the chunk header and then the string data, and every
new name was a small GC-visible allocation. Store names as length-
prefixed records in pointer-free chunks instead and use the record's
offset as its ID; text is then one dependent load and the GC never scans
it.

Each shard bump-allocates from its own chunk, claimed with an atomic
counter, so inserts on different shards don't contend. Records too large
for a shared chunk get a dedicated run of chunks.

Fixed names are inserted first, so their IDs are offsets the AST
generator can compute; initialization panics if they disagree. The
InternalSymbolName enum now reads its members from the same list.
With arena offsets as IDs, the 26-bit base ID field capped the table at
512MB of name text. Give the base ID the full low 32 bits, the most the
hash slots can hold, and shrink derived-name numbers to 29 bits; larger
numbers already fall back to interning the full text.

A flat array of chunk pointers for 32GB of arena would be 16MB, so find
chunks through a two-level directory whose small top level stays in
cache.
@jakebailey

Copy link
Copy Markdown
Member Author

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

@typescript-automation

Copy link
Copy Markdown
Contributor

Hey Jake Bailey (@jakebailey), this PR is in an unmergable state, so is missing a merge commit to run against; please resolve conflicts and try again.

@jakebailey

Copy link
Copy Markdown
Member Author

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

@typescript-automation

typescript-automation Bot commented Oct 28, 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=20
Symbols 88,466 88,466 ~ ~ ~ p=1.000 n=20
Types 79,607 79,607 ~ ~ ~ p=1.000 n=20
Memory Used 104,191k (± 0.03%) 102,881k (± 0.03%) -1,310k (- 1.26%) 102,764k 102,990k p=0.000 n=20
Memory Allocs 2,200,855 (± 0.01%) 2,150,558 (± 0.00%) -50,297 (- 2.29%) 2,150,311 2,150,977 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.026s (± 2.44%) 0.028s (± 3.62%) 🔻+0.002s (+ 8.67%) 0.025s 0.032s p=0.001 n=20
Bind Time 0.011s (± 8.17%) 0.010s (± 5.90%) ~ 0.009s 0.013s p=0.876 n=20
Check Time 0.258s (± 1.08%) 0.250s (± 1.30%) 🟩-0.008s (- 3.27%) 0.235s 0.267s p=0.000 n=20
Emit Time 0.183s (± 1.28%) 0.182s (± 2.59%) ~ 0.166s 0.209s p=0.336 n=20
Total Time 0.481s (± 1.04%) 0.474s (± 1.39%) ~ 0.443s 0.496s p=0.163 n=20
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=20
Symbols 586,560 (± 0.02%) 586,563 (± 0.01%) ~ 586,083 586,832 p=0.570 n=20
Types 241,688 (± 0.00%) 241,689 (± 0.00%) ~ 241,685 241,700 p=0.401 n=20
Memory Used 517,920k (± 0.02%) 504,428k (± 0.02%) -13,492k (- 2.61%) 504,059k 504,710k p=0.000 n=20
Memory Allocs 13,118,282 (± 0.04%) 13,093,196 (± 0.08%) -25,086 (- 0.19%) 13,081,174 13,164,792 p=0.000 n=20
Config Time 0.009s 0.009s ~ ~ ~ p=1.000 n=20
Parse Time 0.135s (± 3.71%) 0.139s (± 1.95%) +0.004s (+ 3.04%) 0.131s 0.154s p=0.020 n=20
Bind Time 0.042s (± 7.04%) 0.043s (±10.51%) ~ 0.035s 0.061s p=0.062 n=20
Check Time 0s 0s ~ ~ ~ p=1.000 n=20
Emit Time 0.922s (± 0.99%) 0.905s (± 1.25%) -0.018s (- 1.91%) 0.862s 0.954s p=0.015 n=20
Total Time 1.119s (± 0.69%) 1.105s (± 0.72%) -0.014s (- 1.26%) 1.072s 1.142s p=0.008 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,227k (± 0.01%) 484,224k (± 0.01%) -13,003k (- 2.62%) 484,050k 484,474k p=0.000 n=20
Memory Allocs 12,805,361 (± 0.02%) 12,791,851 (± 0.01%) -13,509 (- 0.11%) 12,787,579 12,798,921 p=0.000 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.046s (± 3.17%) 0.049s (± 4.76%) 🔻+0.003s (+ 6.59%) 0.041s 0.060s p=0.028 n=20
Bind Time 0.015s (± 8.13%) 0.014s (± 6.17%) 🟩-0.001s (- 9.67%) 0.012s 0.019s p=0.003 n=20
Check Time 1.123s (± 1.13%) 1.125s (± 1.25%) ~ 1.065s 1.180s p=0.984 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.218s (± 1.03%) 1.219s (± 1.21%) ~ 1.157s 1.279s p=0.784 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%) 28,079k (± 0.02%) +242k (+ 0.87%) 28,059k 28,096k p=0.000 n=20
Memory Allocs 323,512 (± 0.04%) 320,457 (± 0.05%) -3,055 (- 0.94%) 319,737 321,046 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.012s (± 4.76%) 0.013s (± 3.69%) 🔻+0.001s (+ 5.31%) 0.011s 0.014s p=0.031 n=20
Bind Time 0.004s (±11.66%) 0.003s (±10.28%) ~ 0.002s 0.005s p=0.384 n=20
Check Time 0.009s (±15.85%) 0.009s (± 5.77%) ~ 0.007s 0.010s p=0.726 n=20
Emit Time 0.011s (± 5.24%) 0.009s (± 5.67%) 🟩-0.001s (-13.02%) 0.008s 0.011s p=0.001 n=20
Total Time 0.036s (± 6.38%) 0.035s (± 1.92%) ~ 0.033s 0.038s p=0.450 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,447k (± 0.02%) 919,634k (± 0.02%) -20,813k (- 2.21%) 919,023k 920,483k p=0.000 n=20
Memory Allocs 15,753,909 (± 0.02%) 15,719,091 (± 0.05%) -34,818 (- 0.22%) 15,704,012 15,780,428 p=0.000 n=20
Config Time 0.002s 0.002s ~ ~ ~ p=1.000 n=20
Parse Time 0.159s (± 1.17%) 0.165s (± 2.48%) +0.006s (+ 3.58%) 0.152s 0.183s p=0.046 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.995s (± 0.82%) 0.990s (± 1.57%) ~ 0.953s 1.103s p=0.143 n=20
Emit Time 0.543s (± 1.88%) 0.527s (± 1.51%) 🟩-0.017s (- 3.05%) 0.494s 0.562s p=0.018 n=20
Total Time 1.798s (± 0.63%) 1.780s (± 0.99%) -0.019s (- 1.05%) 1.715s 1.894s p=0.036 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,836,416k (± 0.06%) 1,773,889k (± 0.07%) 🟩-62,527k (- 3.40%) 1,769,379k 1,777,742k p=0.000 n=20
Memory Allocs 26,745,456 (± 0.06%) 26,625,849 (± 0.04%) -119,607 (- 0.45%) 26,596,750 26,672,370 p=0.000 n=20
Config Time 0.008s (± 2.33%) 0.008s (± 2.33%) ~ 0.008s 0.009s p=1.000 n=20
Parse Time 0.301s (± 3.13%) 0.292s (± 2.20%) ~ 0.255s 0.319s p=0.189 n=20
Bind Time 0.001s (±18.96%) 0.001s ~ ~ ~ p=1.000 n=20
Check Time 3.241s (± 0.49%) 2.954s (± 0.38%) 🟩-0.287s (- 8.86%) 2.899s 2.988s p=0.000 n=20
Emit Time 0.246s (± 1.10%) 0.243s (± 0.81%) ~ 0.235s 0.251s p=0.108 n=20
Total Time 4.289s (± 0.41%) 3.986s (± 0.31%) 🟩-0.303s (- 7.07%) 3.932s 4.036s p=0.000 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,047 2,607,047 ~ ~ ~ p=1.000 n=20
Memory Used 2,881,120k (± 0.05%) 2,813,344k (± 0.03%) -67,776k (- 2.35%) 2,810,188k 2,816,796k p=0.000 n=20
Memory Allocs 75,986,627 (± 0.08%) 75,784,592 (± 0.08%) -202,035 (- 0.27%) 75,544,477 76,162,400 p=0.000 n=20
Config Time 0.027s (± 0.78%) 0.027s (± 0.90%) ~ 0.026s 0.027s p=0.055 n=20
Parse Time 0.481s (± 3.79%) 0.506s (± 4.74%) ~ 0.468s 0.658s p=0.132 n=20
Bind Time 0.163s (± 9.33%) 0.153s (± 8.42%) ~ 0.128s 0.218s p=0.261 n=20
Check Time 7.150s (± 0.42%) 6.822s (± 0.43%) 🟩-0.328s (- 4.59%) 6.743s 6.994s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 7.876s (± 0.36%) 7.563s (± 0.45%) 🟩-0.313s (- 3.97%) 7.472s 7.765s p=0.000 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,170 1,158,170 ~ ~ ~ p=1.000 n=20
Memory Used 972,580k (± 0.02%) 951,263k (± 0.01%) -21,318k (- 2.19%) 950,797k 951,805k p=0.000 n=20
Memory Allocs 13,712,885 (± 0.13%) 13,655,938 (± 0.14%) -56,948 (- 0.42%) 13,609,069 13,765,060 p=0.000 n=20
Config Time 0.008s 0.008s ~ ~ ~ p=1.000 n=20
Parse Time 0.162s (± 2.00%) 0.170s (± 2.99%) 🔻+0.007s (+ 4.43%) 0.157s 0.201s p=0.002 n=20
Bind Time 0.038s (± 3.21%) 0.037s (± 3.97%) ~ 0.033s 0.047s p=0.137 n=20
Check Time 1.535s (± 0.42%) 1.491s (± 0.49%) -0.045s (- 2.91%) 1.466s 1.523s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.761s (± 0.46%) 1.722s (± 0.53%) -0.039s (- 2.24%) 1.689s 1.765s p=0.000 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,173,324k (± 0.22%) 1,154,814k (± 0.46%) -18,510k (- 1.58%) 1,130,584k 1,186,897k p=0.000 n=20
Memory Allocs 77,563,196 (± 0.09%) 77,001,209 (± 0.11%) -561,987 (- 0.72%) 76,668,128 77,455,748 p=0.000 n=20
Config Time 0.002s (±13.56%) 0.004s (±10.70%) 🔻+0.002s (+122.22%) 0.002s 0.005s p=0.000 n=20
Parse Time 0.148s (± 1.61%) 0.158s (± 1.82%) 🔻+0.010s (+ 6.54%) 0.146s 0.171s p=0.000 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.838s (± 0.39%) 0.797s (± 0.81%) 🟩-0.042s (- 4.99%) 0.781s 0.839s p=0.000 n=20
Emit Time 0.180s (± 1.43%) 0.172s (± 2.36%) 🟩-0.007s (- 4.12%) 0.157s 0.188s p=0.006 n=20
Total Time 10.206s (± 0.48%) 9.994s (± 0.90%) -0.212s (- 2.08%) 9.800s 10.589s p=0.000 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,537k (± 0.02%) 219,766k (± 0.02%) -4,771k (- 2.12%) 219,566k 219,943k p=0.000 n=20
Memory Allocs 4,304,322 (± 0.01%) 4,294,596 (± 0.01%) -9,726 (- 0.23%) 4,293,598 4,295,788 p=0.000 n=20
Config Time 0.000s 0.000s (±208.60%) ~ 0.000s 0.001s p=1.000 n=20
Parse Time 0.060s (± 3.52%) 0.075s (± 6.14%) 🔻+0.014s (+24.00%) 0.065s 0.111s p=0.000 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.492s (± 2.62%) 0.481s (± 3.05%) ~ 0.411s 0.527s p=0.080 n=20
Emit Time 0.092s (± 6.10%) 0.091s (± 5.46%) ~ 0.078s 0.126s p=0.424 n=20
Total Time 0.679s (± 2.70%) 0.682s (± 2.96%) ~ 0.590s 0.767s p=0.794 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,647 3,040,647 ~ ~ ~ p=1.000 n=20
Memory Used 2,433,744k (± 0.03%) 2,386,427k (± 0.02%) -47,317k (- 1.94%) 2,385,152k 2,388,121k p=0.000 n=20
Memory Allocs 37,875,839 (± 0.04%) 37,776,449 (± 0.04%) -99,390 (- 0.26%) 37,734,810 37,847,430 p=0.000 n=20
Config Time 0.003s 0.003s ~ ~ ~ p=1.000 n=20
Parse Time 0.261s (± 1.66%) 0.265s (± 2.96%) ~ 0.242s 0.304s p=0.457 n=20
Bind Time 0.082s (± 6.20%) 0.087s (± 9.31%) ~ 0.072s 0.128s p=0.732 n=20
Check Time 7.575s (± 0.58%) 7.583s (± 0.45%) ~ 7.468s 7.750s p=0.499 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 7.932s (± 0.56%) 7.949s (± 0.42%) ~ 7.836s 8.106s p=0.298 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,416k (± 0.02%) 323,515k (± 0.02%) -7,901k (- 2.38%) 323,213k 323,740k p=0.000 n=20
Memory Allocs 5,095,177 (± 0.10%) 5,089,963 (± 0.13%) -5,214 (- 0.10%) 5,078,393 5,133,309 p=0.006 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.046s (± 4.63%) 0.050s (± 3.34%) 🔻+0.003s (+ 6.90%) 0.043s 0.055s p=0.017 n=20
Bind Time 0.016s (±10.69%) 0.015s (±11.33%) ~ 0.012s 0.024s p=0.200 n=20
Check Time 0.670s (± 1.95%) 0.639s (± 1.40%) 🟩-0.031s (- 4.61%) 0.614s 0.695s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.757s (± 1.67%) 0.729s (± 1.23%) 🟩-0.027s (- 3.62%) 0.704s 0.784s p=0.000 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,564k (± 0.01%) 189,412k (± 0.01%) -4,153k (- 2.15%) 189,301k 189,558k p=0.000 n=20
Memory Allocs 1,373,295 (± 0.01%) 1,365,151 (± 0.01%) -8,144 (- 0.59%) 1,364,373 1,365,761 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.047s (± 2.54%) 0.050s (± 2.73%) 🔻+0.003s (+ 6.09%) 0.043s 0.056s p=0.001 n=20
Bind Time 0.021s (± 5.82%) 0.021s (± 4.86%) ~ 0.017s 0.026s p=0.855 n=20
Check Time 0.306s (± 0.99%) 0.296s (± 0.85%) 🟩-0.010s (- 3.19%) 0.287s 0.303s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.380s (± 0.71%) 0.373s (± 0.73%) -0.007s (- 1.88%) 0.362s 0.386s p=0.001 n=20
vscode - native
Errors 11 11 ~ ~ ~ p=1.000 n=20
Symbols 7,387,991 7,387,991 ~ ~ ~ p=1.000 n=20
Types 4,346,718 4,346,718 ~ ~ ~ p=1.000 n=20
Memory Used 5,141,646k (± 0.03%) 4,982,151k (± 0.02%) 🟩-159,496k (- 3.10%) 4,979,930k 4,986,569k p=0.000 n=20
Memory Allocs 64,902,608 (± 0.07%) 64,583,289 (± 0.01%) -319,319 (- 0.49%) 64,566,566 64,620,985 p=0.000 n=20
Config Time 0.034s (± 0.88%) 0.034s (± 2.96%) -0.000s (- 0.15%) 0.033s 0.043s p=0.034 n=20
Parse Time 0.987s (± 1.53%) 1.053s (± 2.11%) 🔻+0.066s (+ 6.71%) 0.955s 1.165s p=0.000 n=20
Bind Time 0.345s (± 6.83%) 0.349s (± 9.26%) ~ 0.299s 0.543s p=0.279 n=20
Check Time 8.287s (± 0.46%) 8.152s (± 0.62%) -0.135s (- 1.63%) 7.935s 8.387s p=0.000 n=20
Emit Time 3.043s (± 5.23%) 3.147s (± 5.75%) ~ 2.796s 3.833s p=0.199 n=20
Total Time 12.759s (± 1.09%) 12.800s (± 1.31%) ~ 12.468s 13.496s p=0.703 n=20
webpack - native
Errors 619 619 ~ ~ ~ p=1.000 n=20
Symbols 917,280 917,280 ~ ~ ~ p=1.000 n=20
Types 632,992 632,992 ~ ~ ~ p=1.000 n=20
Memory Used 690,395k (± 0.02%) 674,689k (± 0.01%) -15,706k (- 2.27%) 674,386k 675,068k p=0.000 n=20
Memory Allocs 6,605,075 (± 0.04%) 6,574,586 (± 0.03%) -30,490 (- 0.46%) 6,569,142 6,584,862 p=0.000 n=20
Config Time 0.004s 0.004s ~ ~ ~ p=1.000 n=20
Parse Time 0.148s (± 3.22%) 0.149s (± 2.87%) ~ 0.133s 0.164s p=0.804 n=20
Bind Time 0.049s (±10.46%) 0.046s (± 9.34%) ~ 0.038s 0.067s p=0.187 n=20
Check Time 1.190s (± 0.49%) 1.179s (± 0.33%) -0.011s (- 0.89%) 1.166s 1.195s p=0.005 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.416s (± 0.51%) 1.401s (± 0.50%) -0.014s (- 1.02%) 1.368s 1.419s p=0.008 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,988 387,988 ~ ~ ~ p=1.000 n=20
Memory Used 350,944k (± 0.02%) 342,880k (± 0.02%) -8,064k (- 2.30%) 342,658k 343,239k p=0.000 n=20
Memory Allocs 4,067,278 (± 0.07%) 4,056,152 (± 0.12%) -11,126 (- 0.27%) 4,044,517 4,086,056 p=0.000 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.062s (± 2.91%) 0.066s (± 2.50%) 🔻+0.004s (+ 6.93%) 0.060s 0.075s p=0.002 n=20
Bind Time 0.021s (±10.06%) 0.020s (±11.40%) ~ 0.015s 0.030s p=0.164 n=20
Check Time 0.417s (± 0.75%) 0.404s (± 0.54%) 🟩-0.014s (- 3.26%) 0.395s 0.414s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.507s (± 0.75%) 0.496s (± 0.80%) -0.011s (- 2.13%) 0.481s 0.510s p=0.000 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

@jakebailey

Copy link
Copy Markdown
Member Author

So, to get the parse time down from the interning cost requires nasty stuff, but, it does seem like it works.

This still leaks and it's still 32-bit's worth of user provided names (which has nice benefits for the hashing stuff over using more bits), but that is something like 2 billion names?

The read-mostly and written halves of the table were kept apart by
padding inside one struct, which relied on the table starting on a
cache line. With the two-level directory the table is small enough to
get a size-class allocation, and since it holds pointers the runtime
puts an 8-byte header before it, so the shards were 8 bytes off. Move
the shards and chunk counter into a separate pointer-free allocation,
which has no header and a size class that's a multiple of 64 bytes.
@jakebailey

Copy link
Copy Markdown
Member Author

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

@typescript-automation

typescript-automation Bot commented Oct 28, 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=20
Symbols 88,466 88,466 ~ ~ ~ p=1.000 n=20
Types 79,607 79,607 ~ ~ ~ p=1.000 n=20
Memory Used 104,148k (± 0.03%) 102,867k (± 0.03%) -1,281k (- 1.23%) 102,753k 102,986k p=0.000 n=20
Memory Allocs 1,263,816 (± 0.01%) 1,213,605 (± 0.01%) 🟩-50,212 (- 3.97%) 1,213,132 1,214,036 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.023s (± 2.35%) 0.025s (± 2.16%) 🔻+0.002s (+ 9.52%) 0.022s 0.027s p=0.000 n=20
Bind Time 0.009s (± 4.74%) 0.009s (± 5.10%) ~ 0.007s 0.010s p=0.629 n=20
Check Time 0.212s (± 0.69%) 0.204s (± 0.63%) 🟩-0.008s (- 3.85%) 0.198s 0.207s p=0.000 n=20
Emit Time 0.138s (± 1.09%) 0.136s (± 0.88%) -0.002s (- 1.70%) 0.132s 0.144s p=0.002 n=20
Total Time 0.386s (± 0.53%) 0.377s (± 0.37%) -0.009s (- 2.24%) 0.372s 0.384s p=0.000 n=20
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=20
Symbols 586,577 (± 0.02%) 586,502 (± 0.01%) ~ 586,190 586,847 p=0.163 n=20
Types 241,688 (± 0.00%) 241,687 (± 0.00%) ~ 241,685 241,691 p=0.358 n=20
Memory Used 517,965k (± 0.02%) 504,414k (± 0.01%) -13,551k (- 2.62%) 504,082k 504,726k p=0.000 n=20
Memory Allocs 7,797,683 (± 0.11%) 7,763,526 (± 0.04%) -34,157 (- 0.44%) 7,757,915 7,782,210 p=0.000 n=20
Config Time 0.008s (± 2.82%) 0.008s (± 2.73%) ~ 0.008s 0.009s p=0.748 n=20
Parse Time 0.129s (± 5.11%) 0.140s (± 3.58%) 🔻+0.011s (+ 8.52%) 0.126s 0.169s p=0.001 n=20
Bind Time 0.048s (±11.44%) 0.046s (±15.99%) 🟩-0.002s (- 3.98%) 0.038s 0.104s p=0.009 n=20
Check Time 0s 0s ~ ~ ~ p=1.000 n=20
Emit Time 0.868s (± 1.21%) 0.860s (± 2.60%) -0.007s (- 0.85%) 0.829s 1.050s p=0.041 n=20
Total Time 1.063s (± 1.42%) 1.065s (± 2.60%) ~ 1.019s 1.269s p=0.394 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,333k (± 0.01%) 484,290k (± 0.01%) -13,043k (- 2.62%) 484,006k 484,447k p=0.000 n=20
Memory Allocs 12,110,409 (± 0.02%) 12,095,728 (± 0.01%) -14,681 (- 0.12%) 12,091,333 12,104,605 p=0.000 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.046s (± 3.31%) 0.048s (± 4.42%) ~ 0.040s 0.056s p=0.146 n=20
Bind Time 0.015s (±10.55%) 0.015s (±11.05%) ~ 0.012s 0.021s p=0.448 n=20
Check Time 1.057s (± 1.87%) 1.057s (± 1.77%) ~ 1.007s 1.160s p=0.973 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.151s (± 1.80%) 1.151s (± 1.70%) ~ 1.101s 1.261s p=0.909 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%) 28,075k (± 0.02%) +239k (+ 0.86%) 28,055k 28,091k p=0.000 n=20
Memory Allocs 248,543 (± 0.05%) 245,598 (± 0.07%) -2,946 (- 1.19%) 245,033 246,435 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.011s (± 2.66%) 0.012s (± 3.60%) 🔻+0.001s (+ 6.48%) 0.010s 0.013s p=0.006 n=20
Bind Time 0.003s (± 9.34%) 0.003s (±10.50%) ~ 0.002s 0.005s p=0.192 n=20
Check Time 0.008s (± 4.40%) 0.008s (± 6.05%) ~ 0.006s 0.010s p=0.551 n=20
Emit Time 0.008s (± 5.79%) 0.008s (± 7.26%) ~ 0.007s 0.012s p=0.477 n=20
Total Time 0.031s (± 1.55%) 0.032s (± 2.18%) ~ 0.028s 0.034s p=0.272 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,750k (± 0.02%) 919,503k (± 0.02%) -21,247k (- 2.26%) 918,815k 920,787k p=0.000 n=20
Memory Allocs 12,671,840 (± 0.02%) 12,628,843 (± 0.04%) -42,997 (- 0.34%) 12,617,234 12,655,526 p=0.000 n=20
Config Time 0.002s (± 5.09%) 0.002s (± 5.09%) ~ 0.002s 0.003s p=1.000 n=20
Parse Time 0.153s (± 1.84%) 0.163s (± 2.39%) 🔻+0.010s (+ 6.35%) 0.151s 0.182s p=0.000 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.964s (± 1.27%) 0.948s (± 1.16%) -0.016s (- 1.64%) 0.918s 1.012s p=0.047 n=20
Emit Time 0.523s (± 2.12%) 0.521s (± 2.58%) ~ 0.470s 0.571s p=0.962 n=20
Total Time 1.738s (± 0.75%) 1.732s (± 1.23%) ~ 1.678s 1.839s p=0.304 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,834,863k (± 0.06%) 1,774,543k (± 0.08%) 🟩-60,320k (- 3.29%) 1,770,115k 1,780,850k p=0.000 n=20
Memory Allocs 26,001,325 (± 0.14%) 25,882,052 (± 0.11%) -119,273 (- 0.46%) 25,800,191 26,058,956 p=0.000 n=20
Config Time 0.009s (± 1.87%) 0.009s (± 1.68%) ~ 0.008s 0.010s p=0.369 n=20
Parse Time 0.323s (± 1.83%) 0.338s (± 2.02%) 🔻+0.014s (+ 4.41%) 0.313s 0.371s p=0.002 n=20
Bind Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Check Time 3.350s (± 0.93%) 3.041s (± 1.38%) 🟩-0.309s (- 9.22%) 2.900s 3.211s p=0.000 n=20
Emit Time 0.255s (± 1.86%) 0.269s (± 6.05%) 🔻+0.014s (+ 5.46%) 0.245s 0.375s p=0.016 n=20
Total Time 4.528s (± 0.66%) 4.237s (± 0.96%) 🟩-0.291s (- 6.43%) 4.085s 4.418s p=0.000 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,047 2,607,047 ~ ~ ~ p=1.000 n=20
Memory Used 2,880,504k (± 0.04%) 2,813,125k (± 0.04%) -67,379k (- 2.34%) 2,810,050k 2,818,560k p=0.000 n=20
Memory Allocs 75,226,997 (± 0.18%) 75,446,027 (± 0.35%) ~ 74,762,584 76,755,278 p=0.398 n=20
Config Time 0.030s (±11.58%) 0.027s (± 1.24%) ~ 0.026s 0.028s p=0.184 n=20
Parse Time 0.566s (± 5.69%) 0.606s (± 2.98%) 🔻+0.041s (+ 7.19%) 0.546s 0.669s p=0.001 n=20
Bind Time 0.194s (±12.16%) 0.170s (± 8.63%) ~ 0.144s 0.261s p=0.140 n=20
Check Time 7.870s (± 0.63%) 7.585s (± 0.69%) 🟩-0.285s (- 3.62%) 7.409s 7.852s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 8.718s (± 0.61%) 8.446s (± 0.61%) 🟩-0.272s (- 3.12%) 8.291s 8.669s p=0.000 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,170 1,158,170 ~ ~ ~ p=1.000 n=20
Memory Used 972,509k (± 0.02%) 951,182k (± 0.02%) -21,328k (- 2.19%) 950,133k 952,048k p=0.000 n=20
Memory Allocs 13,585,292 (± 0.31%) 13,519,703 (± 0.26%) -65,589 (- 0.48%) 13,463,785 13,801,480 p=0.000 n=20
Config Time 0.008s 0.008s ~ ~ ~ p=1.000 n=20
Parse Time 0.161s (± 3.48%) 0.170s (± 1.69%) 🔻+0.009s (+ 5.48%) 0.156s 0.180s p=0.000 n=20
Bind Time 0.045s (± 8.45%) 0.040s (± 3.19%) 🟩-0.004s (-10.01%) 0.038s 0.048s p=0.006 n=20
Check Time 1.501s (± 0.46%) 1.459s (± 0.52%) -0.042s (- 2.80%) 1.422s 1.498s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.732s (± 0.47%) 1.693s (± 0.42%) -0.039s (- 2.28%) 1.668s 1.735s p=0.000 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,165,237k (± 0.32%) 1,142,128k (± 0.21%) -23,109k (- 1.98%) 1,132,515k 1,152,694k p=0.000 n=20
Memory Allocs 47,680,759 (± 0.11%) 47,306,097 (± 0.04%) -374,663 (- 0.79%) 47,244,863 47,398,883 p=0.000 n=20
Config Time 0.002s (±12.21%) 0.004s (±14.48%) 🔻+0.002s (+92.31%) 0.002s 0.007s p=0.000 n=20
Parse Time 0.140s (± 1.99%) 0.153s (± 1.97%) 🔻+0.013s (+ 9.40%) 0.144s 0.174s p=0.000 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.826s (± 1.70%) 0.777s (± 1.36%) 🟩-0.049s (- 5.90%) 0.755s 0.829s p=0.000 n=20
Emit Time 0.142s (± 1.45%) 0.138s (± 4.78%) -0.003s (- 2.33%) 0.131s 0.197s p=0.000 n=20
Total Time 9.550s (± 1.49%) 9.341s (± 1.66%) -0.209s (- 2.19%) 9.098s 10.503s p=0.000 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,629k (± 0.02%) 219,729k (± 0.02%) -4,900k (- 2.18%) 219,576k 219,861k p=0.000 n=20
Memory Allocs 2,401,421 (± 0.01%) 2,391,910 (± 0.01%) -9,511 (- 0.40%) 2,390,387 2,392,957 p=0.000 n=20
Config Time 0.000s (±208.60%) 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.051s (± 3.12%) 0.058s (± 6.83%) 🔻+0.008s (+15.25%) 0.050s 0.090s p=0.000 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.404s (± 3.10%) 0.388s (± 1.10%) 🟩-0.016s (- 3.94%) 0.372s 0.403s p=0.009 n=20
Emit Time 0.053s (± 5.69%) 0.052s (± 5.06%) ~ 0.042s 0.060s p=0.835 n=20
Total Time 0.540s (± 3.41%) 0.527s (± 1.30%) ~ 0.506s 0.564s p=0.330 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,647 3,040,647 ~ ~ ~ p=1.000 n=20
Memory Used 2,433,448k (± 0.02%) 2,386,920k (± 0.03%) -46,528k (- 1.91%) 2,384,492k 2,390,078k p=0.000 n=20
Memory Allocs 37,402,928 (± 0.10%) 37,253,455 (± 0.07%) -149,473 (- 0.40%) 37,189,261 37,397,622 p=0.000 n=20
Config Time 0.003s (± 6.00%) 0.003s ~ ~ ~ p=0.231 n=20
Parse Time 0.255s (± 2.22%) 0.257s (± 2.23%) ~ 0.233s 0.276s p=0.533 n=20
Bind Time 0.090s (±10.38%) 0.093s (±10.77%) ~ 0.075s 0.142s p=0.643 n=20
Check Time 7.417s (± 1.74%) 7.362s (± 1.80%) -0.056s (- 0.75%) 7.100s 7.794s p=0.047 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 7.778s (± 1.67%) 7.725s (± 1.79%) ~ 7.446s 8.198s p=0.064 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,451k (± 0.01%) 323,514k (± 0.01%) -7,937k (- 2.39%) 323,323k 323,699k p=0.000 n=20
Memory Allocs 4,396,795 (± 0.17%) 4,391,821 (± 0.27%) ~ 4,366,431 4,461,664 p=0.081 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.044s (± 4.38%) 0.046s (± 4.62%) ~ 0.039s 0.057s p=0.212 n=20
Bind Time 0.015s (±10.88%) 0.013s (±10.56%) ~ 0.010s 0.019s p=0.096 n=20
Check Time 0.597s (± 1.57%) 0.586s (± 2.46%) -0.011s (- 1.89%) 0.550s 0.703s p=0.003 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.677s (± 1.44%) 0.664s (± 2.25%) -0.013s (- 1.92%) 0.624s 0.783s p=0.007 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,520k (± 0.01%) 189,366k (± 0.01%) -4,153k (- 2.15%) 189,281k 189,453k p=0.000 n=20
Memory Allocs 1,318,147 (± 0.02%) 1,310,123 (± 0.02%) -8,024 (- 0.61%) 1,309,359 1,311,322 p=0.000 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.045s (± 3.88%) 0.049s (± 2.33%) 🔻+0.004s (+ 8.47%) 0.045s 0.053s p=0.001 n=20
Bind Time 0.022s (± 4.83%) 0.021s (± 4.14%) ~ 0.018s 0.026s p=0.338 n=20
Check Time 0.315s (± 1.35%) 0.306s (± 0.90%) -0.009s (- 2.92%) 0.293s 0.317s p=0.001 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.388s (± 1.12%) 0.382s (± 0.75%) -0.007s (- 1.70%) 0.370s 0.396s p=0.020 n=20
vscode - native
Errors 11 11 ~ ~ ~ p=1.000 n=20
Symbols 7,399,203 7,399,203 ~ ~ ~ p=1.000 n=20
Types 4,359,460 4,359,460 ~ ~ ~ p=1.000 n=20
Memory Used 5,150,046k (± 0.01%) 4,990,982k (± 0.02%) 🟩-159,064k (- 3.09%) 4,988,571k 4,995,317k p=0.000 n=20
Memory Allocs 56,424,020 (± 0.03%) 56,148,340 (± 0.03%) -275,679 (- 0.49%) 56,115,998 56,217,654 p=0.000 n=20
Config Time 0.035s (± 0.93%) 0.035s (± 1.42%) ~ 0.033s 0.036s p=0.301 n=20
Parse Time 0.919s (± 2.02%) 0.979s (± 3.33%) 🔻+0.061s (+ 6.59%) 0.860s 1.108s p=0.005 n=20
Bind Time 0.330s (± 6.05%) 0.375s (±12.14%) ~ 0.291s 0.658s p=0.095 n=20
Check Time 7.843s (± 1.30%) 7.704s (± 1.24%) ~ 7.221s 8.049s p=0.062 n=20
Emit Time 2.891s (± 5.60%) 3.098s (± 7.42%) ~ 2.575s 3.790s p=0.753 n=20
Total Time 12.076s (± 1.42%) 12.254s (± 2.31%) ~ 11.354s 13.209s p=0.441 n=20
webpack - native
Errors 619 619 ~ ~ ~ p=1.000 n=20
Symbols 925,723 925,723 ~ ~ ~ p=1.000 n=20
Types 643,578 643,578 ~ ~ ~ p=1.000 n=20
Memory Used 697,659k (± 0.02%) 681,804k (± 0.02%) -15,855k (- 2.27%) 681,381k 682,298k p=0.000 n=20
Memory Allocs 6,552,828 (± 0.05%) 6,523,897 (± 0.06%) -28,931 (- 0.44%) 6,515,330 6,552,924 p=0.000 n=20
Config Time 0.004s 0.004s ~ ~ ~ p=1.000 n=20
Parse Time 0.141s (± 2.96%) 0.152s (± 2.66%) 🔻+0.011s (+ 7.89%) 0.136s 0.168s p=0.001 n=20
Bind Time 0.044s (± 7.90%) 0.046s (±10.04%) ~ 0.037s 0.071s p=0.652 n=20
Check Time 1.196s (± 0.45%) 1.178s (± 0.57%) -0.018s (- 1.46%) 1.156s 1.209s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.408s (± 0.57%) 1.405s (± 0.71%) ~ 1.373s 1.451s p=0.498 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,988 387,988 ~ ~ ~ p=1.000 n=20
Memory Used 350,924k (± 0.02%) 342,789k (± 0.02%) -8,136k (- 2.32%) 342,572k 343,224k p=0.000 n=20
Memory Allocs 3,991,135 (± 0.07%) 3,978,908 (± 0.17%) -12,227 (- 0.31%) 3,964,109 4,026,562 p=0.000 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.060s (± 2.43%) 0.063s (± 3.32%) 🔻+0.003s (+ 5.25%) 0.056s 0.074s p=0.022 n=20
Bind Time 0.022s (±10.86%) 0.021s (±12.71%) ~ 0.016s 0.031s p=0.163 n=20
Check Time 0.422s (± 0.94%) 0.412s (± 0.80%) -0.010s (- 2.31%) 0.402s 0.430s p=0.000 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.510s (± 0.97%) 0.501s (± 0.78%) -0.009s (- 1.70%) 0.490s 0.527s p=0.002 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.

1 participant