Skip to content

Paged link stores with fallback from array to map representation - #4329

Merged
ahejlsberg merged 6 commits into
mainfrom
paged-link-store
Jul 22, 2026
Merged

Paged link stores with fallback from array to map representation#4329
ahejlsberg merged 6 commits into
mainfrom
paged-link-store

Conversation

@ahejlsberg

Copy link
Copy Markdown
Member

This PR builds on #4226 with the following enhancements:

  • Paged link stores use a map for the page table when node or symbol IDs have larger numeric values.
  • Pages are typed as fixed size arrays (*[pageSize]V) instead of slices ([]V), reducing the size of the page table by 66%.
  • SymbolNodeLinks are just a single pointer-sized field so they're stored directly in the pages of the link store.
  • ValueSymbolLinks is a larger structure so they're stored as references into an arena.

mds-ant and others added 3 commits June 6, 2026 13:26
The checker keeps per-symbol and per-node side tables as
core.LinkStore[K, V], a map[K]*V backed by an arena. The two hottest
of these, valueSymbolLinks and symbolNodeLinks, dominate the
mapaccess1_fast64 profile of a full check.

Symbols and nodes already carry a lazily-assigned dense uint64 id, so
these two stores can become paged arrays indexed by id. Lookup becomes
a length check plus two slice indexes on the fast path, avoiding the
hash, bucket probe, and pointer chase of a map lookup.

This change adds core.IdLinkStore[V], a 256-entry-per-page paged array
with the same Get/Has/TryGet surface as LinkStore, plus thin
symbolLinkStore[V] and nodeLinkStore[V] wrappers in the checker that
key by ast.GetSymbolId / ast.GetNodeId. Only the two hottest stores
are converted; sparser stores stay map-backed to keep memory in check.

VS Code src project, --noEmit, single-threaded:
  instructions:u (GOGC=off, min-of-3): 100.18G -> 94.22G  (-5.9%)
  wall, n=14 interleaved median:       20.14s  -> 17.28s  (-14.2%)
  Memory used:                          3584M  ->  3429M  (-4.3%)

VS Code src project, --noEmit, parallel (default):
  wall, n=14 interleaved median:         6.16s ->  5.61s  (-9.0%)
  Memory used:                           4181M ->  4257M  (+1.8%)

Types/Symbols/Instantiations counters unchanged.
No functional change. The previous expression was already valid Go (make
accepts any integer-typed length), but computing the delta in int avoids
the inner uint64(len(...)) cast and reads more clearly.
Copilot AI review requested due to automatic review settings June 15, 2026 22:15
@ahejlsberg

Copy link
Copy Markdown
Member Author

@typescript-bot perf test this faster

@typescript-automation

typescript-automation Bot commented Jun 15, 2026

Copy link
Copy Markdown

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

Command Status Results
perf test this faster ✅ Started ❌ Results

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR introduces a new paged, ID-indexed link-store implementation to reduce checker hot-path overhead, and migrates the two hottest checker link stores (symbolNodeLinks, valueSymbolLinks) onto it with different storage strategies (inline vs arena-backed) based on value size.

Changes:

  • Add core.PagedLinkStore[V] with dual page-table representations (array-backed vs map-backed) and fixed-size pages (*[256]V).
  • Add checker-specific wrappers (nodeLinkStore, symbolArenaLinkStore) and switch Checker.symbolNodeLinks / Checker.valueSymbolLinks to use them.
  • Expose ast.GetNextNodeId / ast.GetNextSymbolId to choose the page-table strategy at checker initialization time.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.

File Description
internal/core/linkstore.go Adds PagedLinkStore implementation and page sizing constants.
internal/checker/links.go Introduces node/symbol link-store wrappers over PagedLinkStore.
internal/checker/checker.go Migrates two checker link stores to the new paged implementations and initializes them in NewChecker.
internal/ast/utilities.go Adds APIs to read the current global next node/symbol ID counters for strategy selection.

Comment thread internal/core/linkstore.go
Comment thread internal/core/linkstore.go
Comment thread internal/core/linkstore.go
@typescript-automation

Copy link
Copy Markdown

@ahejlsberg, the perf run you requested failed. You can check the log here.

@jakebailey

Copy link
Copy Markdown
Member

@typescript-bot perf test this faster

@typescript-automation

typescript-automation Bot commented Jun 15, 2026

Copy link
Copy Markdown

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

@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 4 4 ~ ~ ~ p=1.000 n=6
Symbols 81,797 (± 0.04%) 81,769 (± 0.03%) ~ 81,735 81,798 p=0.230 n=6
Types 98,821 98,821 ~ ~ ~ p=1.000 n=6
Memory Used 180,351k (± 0.28%) 178,244k (± 0.49%) -2,107k (- 1.17%) 177,188k 179,753k p=0.005 n=6
Memory Allocs 1,577,202 (± 0.02%) 1,577,352 (± 0.02%) ~ 1,577,020 1,577,744 p=0.378 n=6
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=6
Parse Time 0.062s (± 5.58%) 0.058s (± 9.61%) ~ 0.050s 0.066s p=0.296 n=6
Bind Time 0.017s (±23.21%) 0.016s (±16.95%) ~ 0.012s 0.019s p=0.871 n=6
Check Time 0s 0s ~ ~ ~ p=1.000 n=6
Emit Time 0.847s (± 1.67%) 0.821s (± 2.00%) 🟩-0.026s (- 3.07%) 0.809s 0.848s p=0.020 n=6
Total Time 0.927s (± 1.47%) 0.896s (± 2.25%) 🟩-0.031s (- 3.38%) 0.878s 0.924s p=0.030 n=6
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=6
Symbols 876,710 (± 0.10%) 875,993 (± 0.08%) ~ 875,086 877,204 p=0.230 n=6
Types 263,750 (± 0.00%) 263,750 (± 0.00%) ~ 263,748 263,751 p=1.000 n=6
Memory Used 830,395k (± 0.04%) 829,404k (± 0.07%) -991k (- 0.12%) 828,674k 830,066k p=0.013 n=6
Memory Allocs 6,903,967 (± 0.26%) 6,911,053 (± 0.23%) ~ 6,894,967 6,932,099 p=0.575 n=6
Config Time 0.017s 0.017s (± 2.98%) ~ 0.017s 0.018s p=0.174 n=6
Parse Time 0.248s (± 6.10%) 0.241s (± 5.67%) ~ 0.227s 0.259s p=0.378 n=6
Bind Time 0.049s (±36.67%) 0.048s (±41.21%) ~ 0.036s 0.083s p=0.871 n=6
Check Time 0s 0s ~ ~ ~ p=1.000 n=6
Emit Time 1.899s (± 1.93%) 1.745s (± 1.80%) 🟩-0.154s (- 8.12%) 1.710s 1.790s p=0.005 n=6
Total Time 2.224s (± 1.31%) 2.064s (± 2.28%) 🟩-0.160s (- 7.21%) 2.007s 2.113s p=0.005 n=6
mui-docs - native
Errors 11,244 (± 0.02%) 11,246 (± 0.00%) ~ 11,245 11,246 p=0.191 n=6
Symbols 4,209,723 4,209,723 ~ ~ ~ p=1.000 n=6
Types 1,532,183 1,532,183 ~ ~ ~ p=1.000 n=6
Memory Used 4,962,373k (± 0.07%) 4,949,415k (± 0.06%) -12,959k (- 0.26%) 4,945,749k 4,952,244k p=0.005 n=6
Memory Allocs 80,278,718 (±16.62%) 90,962,578 (±17.30%) ~ 65,892,402 108,847,014 p=0.230 n=6
Config Time 0.017s (± 5.95%) 0.017s (± 3.32%) ~ 0.016s 0.017s p=0.138 n=6
Parse Time 1.026s (±21.43%) 1.184s (±22.82%) ~ 0.787s 1.557s p=0.298 n=6
Bind Time 0.002s 0.002s ~ ~ ~ p=1.000 n=6
Check Time 17.000s (± 0.51%) 15.695s (± 0.98%) 🟩-1.306s (- 7.68%) 15.410s 15.819s p=0.005 n=6
Emit Time 0.439s (± 3.84%) 0.453s (± 4.51%) ~ 0.433s 0.473s p=0.076 n=6
Total Time 19.058s (± 1.73%) 18.028s (± 1.12%) 🟩-1.030s (- 5.40%) 17.677s 18.202s p=0.005 n=6
self-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 1,394,138 1,394,138 ~ ~ ~ p=1.000 n=6
Types 442,153 442,153 ~ ~ ~ p=1.000 n=6
Memory Used 1,650,407k (± 0.25%) 1,656,416k (± 0.31%) ~ 1,649,630k 1,663,138k p=0.093 n=6
Memory Allocs 55,627,801 (± 0.05%) 55,707,289 (± 0.06%) +79,488 (+ 0.14%) 55,660,268 55,743,984 p=0.008 n=6
Config Time 0.014s (±44.50%) 0.015s (±22.68%) ~ 0.009s 0.018s p=0.423 n=6
Parse Time 0.253s (± 2.79%) 0.255s (± 3.47%) ~ 0.244s 0.269s p=0.688 n=6
Bind Time 0.000s 0.000s (±244.70%) ~ 0.000s 0.001s p=0.405 n=6
Check Time 2.316s (± 1.15%) 2.198s (± 0.57%) 🟩-0.118s (- 5.09%) 2.184s 2.217s p=0.005 n=6
Emit Time 0.230s (± 5.32%) 0.228s (± 4.80%) ~ 0.215s 0.239s p=0.748 n=6
Total Time 29.509s (± 1.21%) 28.165s (± 0.46%) 🟩-1.344s (- 4.55%) 28.020s 28.370s p=0.005 n=6
self-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 337,634 337,634 ~ ~ ~ p=1.000 n=6
Types 199,520 199,520 ~ ~ ~ p=1.000 n=6
Memory Used 332,322k (± 0.02%) 326,301k (± 0.05%) -6,021k (- 1.81%) 326,094k 326,530k p=0.005 n=6
Memory Allocs 2,416,156 (± 0.02%) 2,417,809 (± 0.03%) +1,653 (+ 0.07%) 2,416,927 2,418,508 p=0.008 n=6
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=6
Parse Time 0.127s (± 4.83%) 0.133s (± 4.80%) ~ 0.125s 0.143s p=0.092 n=6
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=6
Check Time 1.395s (± 0.45%) 1.297s (± 0.97%) 🟩-0.098s (- 7.04%) 1.283s 1.313s p=0.005 n=6
Emit Time 0.091s (± 5.43%) 0.089s (±10.75%) ~ 0.080s 0.102s p=0.376 n=6
Total Time 1.668s (± 0.80%) 1.572s (± 0.55%) 🟩-0.096s (- 5.75%) 1.557s 1.580s p=0.005 n=6
ts-pre-modules - native
Errors 3 3 ~ ~ ~ p=1.000 n=6
Symbols 97,488 97,488 ~ ~ ~ p=1.000 n=6
Types 356 356 ~ ~ ~ p=1.000 n=6
Memory Used 133,715k (± 0.03%) 133,729k (± 0.02%) ~ 133,683k 133,775k p=0.810 n=6
Memory Allocs 183,041 (± 0.24%) 182,869 (± 0.16%) ~ 182,464 183,294 p=0.575 n=6
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=6
Parse Time 0.112s (± 4.59%) 0.117s (± 5.58%) ~ 0.107s 0.125s p=0.199 n=6
Bind Time 0.040s (± 9.74%) 0.036s (±16.22%) ~ 0.030s 0.043s p=0.295 n=6
Check Time 0s 0s ~ ~ ~ p=1.000 n=6
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=6
Total Time 0.156s (± 4.51%) 0.158s (± 5.18%) ~ 0.148s 0.172s p=0.872 n=6
vscode - native
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 6,600,321 6,600,321 ~ ~ ~ p=1.000 n=6
Types 2,340,625 2,340,625 ~ ~ ~ p=1.000 n=6
Memory Used 4,491,650k (± 0.02%) 4,556,369k (± 0.01%) +64,719k (+ 1.44%) 4,555,653k 4,556,818k p=0.005 n=6
Memory Allocs 31,710,698 (± 0.14%) 31,764,770 (± 0.05%) ~ 31,746,922 31,794,552 p=0.093 n=6
Config Time 0.069s (± 9.44%) 0.068s (±12.28%) ~ 0.059s 0.079s p=0.747 n=6
Parse Time 0.864s (± 3.50%) 0.896s (± 3.31%) ~ 0.860s 0.937s p=0.149 n=6
Bind Time 0.165s (±41.03%) 0.138s (±12.44%) ~ 0.127s 0.171s p=0.872 n=6
Check Time 8.589s (± 1.04%) 7.776s (± 0.99%) 🟩-0.813s (- 9.47%) 7.720s 7.924s p=0.005 n=6
Emit Time 2.171s (± 8.98%) 1.808s (± 8.51%) 🟩-0.363s (-16.71%) 1.554s 2.000s p=0.020 n=6
Total Time 11.879s (± 0.69%) 10.704s (± 1.29%) 🟩-1.175s (- 9.90%) 10.572s 10.890s p=0.005 n=6
webpack - native
Errors 2 2 ~ ~ ~ p=1.000 n=6
Symbols 181,719 181,719 ~ ~ ~ p=1.000 n=6
Types 340 340 ~ ~ ~ p=1.000 n=6
Memory Used 219,688k (± 0.19%) 219,915k (± 0.11%) ~ 219,651k 220,384k p=0.688 n=6
Memory Allocs 1,061,584 (± 0.33%) 1,064,196 (± 0.28%) ~ 1,060,124 1,068,879 p=0.298 n=6
Config Time 0.011s (±19.12%) 0.012s (±19.02%) ~ 0.009s 0.015s p=0.465 n=6
Parse Time 0.153s (± 4.09%) 0.152s (± 5.02%) ~ 0.139s 0.159s p=1.000 n=6
Bind Time 0s 0s ~ ~ ~ p=1.000 n=6
Check Time 0s 0s ~ ~ ~ p=1.000 n=6
Emit Time 0.040s (±14.91%) 0.045s (±13.90%) ~ 0.035s 0.052s p=0.170 n=6
Total Time 0.205s (± 2.36%) 0.210s (± 3.86%) ~ 0.201s 0.223s p=0.470 n=6
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 1,065,023 1,065,023 ~ ~ ~ p=1.000 n=6
Types 389,185 389,185 ~ ~ ~ p=1.000 n=6
Memory Used 643,082k (± 0.02%) 645,933k (± 0.03%) +2,850k (+ 0.44%) 645,749k 646,281k p=0.005 n=6
Memory Allocs 5,064,068 (± 0.12%) 5,065,467 (± 0.05%) ~ 5,062,527 5,068,724 p=0.936 n=6
Config Time 0.004s (±18.57%) 0.005s (±12.16%) ~ 0.004s 0.005s p=0.855 n=6
Parse Time 0.133s (± 4.63%) 0.131s (± 5.58%) ~ 0.121s 0.139s p=0.748 n=6
Bind Time 0.036s (±17.93%) 0.033s (±28.20%) ~ 0.025s 0.049s p=0.336 n=6
Check Time 1.309s (± 1.30%) 1.239s (± 0.76%) 🟩-0.071s (- 5.40%) 1.227s 1.251s p=0.005 n=6
Emit Time 0.001s 0.001s ~ ~ ~ p=1.000 n=6
Total Time 1.488s (± 0.95%) 1.412s (± 0.74%) 🟩-0.077s (- 5.14%) 1.400s 1.424s p=0.005 n=6
System info unknown
Hosts
  • native
Scenarios
  • Compiler-Unions - native
  • angular-1 - native
  • mui-docs - native
  • self-build-src - native
  • self-compiler - native
  • ts-pre-modules - native
  • vscode - native
  • webpack - native
  • xstate-main - native
Benchmark Name Iterations
Current pr 6
Baseline baseline 6

Developer Information:

Download Benchmarks

@ahejlsberg

Copy link
Copy Markdown
Member Author

Latest commit hardens implementation for 32-bit architectures and automatically switches between page list and page map based on magnitude of key values.

@ahejlsberg

Copy link
Copy Markdown
Member Author

@typescript-bot perf test this faster

@typescript-automation

typescript-automation Bot commented Jul 22, 2026

Copy link
Copy Markdown

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

@ahejlsberg
The results of the perf run you requested are in!

Here they are:

tsc

Comparison Report - baseline..pr
Metric baseline pr Delta Best Worst p-value
Compiler-Unions - native
Errors 4 4 ~ ~ ~ p=1.000 n=6
Symbols 81,794 (± 0.04%) 81,792 (± 0.02%) ~ 81,770 81,808 p=0.810 n=6
Types 98,819 98,819 ~ ~ ~ p=1.000 n=6
Memory Used 179,787k (± 0.36%) 177,858k (± 0.38%) -1,930k (- 1.07%) 176,754k 178,866k p=0.005 n=6
Memory Allocs 2,695,473 (± 0.01%) 2,695,682 (± 0.01%) ~ 2,695,281 2,696,127 p=0.378 n=6
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=6
Parse Time 0.060s (± 8.21%) 0.060s (± 8.58%) ~ 0.053s 0.067s p=0.936 n=6
Bind Time 0.017s (±22.34%) 0.018s (±22.75%) ~ 0.013s 0.025s p=0.807 n=6
Check Time 0s 0s ~ ~ ~ p=1.000 n=6
Emit Time 0.920s (± 0.82%) 0.874s (± 1.18%) 🟩-0.046s (- 4.97%) 0.864s 0.892s p=0.005 n=6
Total Time 0.998s (± 0.53%) 0.953s (± 1.40%) 🟩-0.045s (- 4.51%) 0.939s 0.978s p=0.005 n=6
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=6
Symbols 873,093 (± 0.06%) 871,344 (± 0.13%) -1,749 (- 0.20%) 870,386 873,529 p=0.045 n=6
Types 263,953 (± 0.00%) 263,952 (± 0.00%) ~ 263,949 263,954 p=0.617 n=6
Memory Used 829,394k (± 0.07%) 828,193k (± 0.14%) -1,201k (- 0.14%) 827,023k 830,163k p=0.045 n=6
Memory Allocs 13,168,349 (± 0.05%) 13,183,912 (± 0.16%) +15,563 (+ 0.12%) 13,169,595 13,223,380 p=0.045 n=6
Config Time 0.017s (± 3.72%) 0.017s (± 2.42%) ~ 0.016s 0.017s p=0.673 n=6
Parse Time 0.259s (± 5.75%) 0.249s (± 5.81%) ~ 0.234s 0.274s p=0.422 n=6
Bind Time 0.050s (±33.40%) 0.065s (±34.26%) ~ 0.039s 0.092s p=0.630 n=6
Check Time 0s 0s ~ ~ ~ p=1.000 n=6
Emit Time 2.061s (± 1.70%) 1.919s (± 1.82%) 🟩-0.142s (- 6.91%) 1.864s 1.974s p=0.005 n=6
Total Time 2.398s (± 1.41%) 2.259s (± 1.46%) 🟩-0.139s (- 5.80%) 2.204s 2.285s p=0.005 n=6
mui-docs - native
Errors 11,279 (± 0.06%) 11,281 (± 0.02%) ~ 11,277 11,282 p=0.753 n=6
Symbols 4,450,247 4,450,247 ~ ~ ~ p=1.000 n=6
Types 1,659,961 1,659,961 ~ ~ ~ p=1.000 n=6
Memory Used 5,083,582k (± 0.05%) 5,073,346k (± 0.06%) -10,236k (- 0.20%) 5,070,173k 5,077,751k p=0.005 n=6
Memory Allocs 51,255,349 (± 0.13%) 51,240,542 (± 0.04%) ~ 51,204,341 51,270,671 p=0.689 n=6
Config Time 0.016s (± 3.16%) 0.017s (± 7.26%) ~ 0.016s 0.019s p=0.923 n=6
Parse Time 0.536s (± 2.72%) 0.521s (± 2.96%) ~ 0.500s 0.542s p=0.128 n=6
Bind Time 0.002s 0.002s ~ ~ ~ p=1.000 n=6
Check Time 18.014s (± 0.69%) 16.637s (± 0.75%) 🟩-1.378s (- 7.65%) 16.542s 16.887s p=0.005 n=6
Emit Time 0.465s (± 2.97%) 0.472s (± 4.03%) ~ 0.451s 0.490s p=1.000 n=6
Total Time 19.744s (± 0.72%) 18.346s (± 1.06%) 🟩-1.398s (- 7.08%) 18.029s 18.638s p=0.005 n=6
self-build-src - native
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 1,394,141 1,394,141 ~ ~ ~ p=1.000 n=6
Types 442,163 442,163 ~ ~ ~ p=1.000 n=6
Memory Used 1,652,839k (± 0.19%) 1,665,954k (± 0.20%) +13,116k (+ 0.79%) 1,662,261k 1,670,199k p=0.005 n=6
Memory Allocs 97,161,999 (± 0.04%) 97,286,368 (± 0.05%) +124,369 (+ 0.13%) 97,200,620 97,342,156 p=0.005 n=6
Config Time 0.016s (±35.54%) 0.017s (±17.65%) ~ 0.012s 0.019s p=0.677 n=6
Parse Time 0.253s (± 2.09%) 0.253s (± 2.17%) ~ 0.246s 0.260s p=0.872 n=6
Bind Time 0.001s (±167.16%) 0.000s (±244.70%) ~ 0.000s 0.001s p=0.527 n=6
Check Time 2.321s (± 0.98%) 2.179s (± 0.64%) 🟩-0.142s (- 6.13%) 2.153s 2.193s p=0.005 n=6
Emit Time 0.298s (± 1.99%) 0.306s (± 6.61%) ~ 0.279s 0.328s p=0.575 n=6
Total Time 30.210s (± 0.74%) 28.743s (± 0.58%) 🟩-1.467s (- 4.86%) 28.512s 28.943s p=0.005 n=6
self-compiler - native
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 337,634 337,634 ~ ~ ~ p=1.000 n=6
Types 199,520 199,520 ~ ~ ~ p=1.000 n=6
Memory Used 332,386k (± 0.04%) 326,534k (± 0.04%) -5,852k (- 1.76%) 326,349k 326,745k p=0.005 n=6
Memory Allocs 4,683,643 (± 0.01%) 4,685,456 (± 0.02%) +1,814 (+ 0.04%) 4,684,059 4,686,842 p=0.013 n=6
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=6
Parse Time 0.125s (± 4.23%) 0.127s (± 4.37%) ~ 0.120s 0.135s p=0.630 n=6
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=6
Check Time 1.388s (± 1.29%) 1.286s (± 0.75%) 🟩-0.102s (- 7.34%) 1.273s 1.296s p=0.005 n=6
Emit Time 0.118s (± 3.76%) 0.119s (± 9.90%) ~ 0.102s 0.135s p=0.748 n=6
Total Time 1.685s (± 0.97%) 1.584s (± 1.33%) 🟩-0.101s (- 5.97%) 1.546s 1.604s p=0.005 n=6
ts-pre-modules - native
Errors 3 3 ~ ~ ~ p=1.000 n=6
Symbols 97,488 97,488 ~ ~ ~ p=1.000 n=6
Types 356 356 ~ ~ ~ p=1.000 n=6
Memory Used 133,716k (± 0.02%) 133,724k (± 0.03%) ~ 133,655k 133,761k p=0.688 n=6
Memory Allocs 180,035 (± 0.11%) 180,238 (± 0.24%) ~ 179,673 180,756 p=0.378 n=6
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=6
Parse Time 0.114s (± 4.23%) 0.112s (± 3.06%) ~ 0.106s 0.116s p=0.377 n=6
Bind Time 0.034s (±13.35%) 0.039s (±13.02%) ~ 0.030s 0.044s p=0.170 n=6
Check Time 0s 0s ~ ~ ~ p=1.000 n=6
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=6
Total Time 0.152s (± 5.06%) 0.155s (± 4.63%) ~ 0.144s 0.162s p=0.470 n=6
vscode - native
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 7,250,579 7,250,579 ~ ~ ~ p=1.000 n=6
Types 2,541,212 2,541,212 ~ ~ ~ p=1.000 n=6
Memory Used 4,975,919k (± 0.02%) 4,974,310k (± 0.03%) -1,609k (- 0.03%) 4,972,011k 4,976,334k p=0.045 n=6
Memory Allocs 37,321,103 (± 0.04%) 37,427,613 (± 0.08%) +106,511 (+ 0.29%) 37,389,758 37,474,232 p=0.005 n=6
Config Time 0.075s (± 8.42%) 0.073s (± 6.88%) ~ 0.066s 0.081s p=0.628 n=6
Parse Time 0.934s (± 3.24%) 0.968s (± 2.34%) +0.034s (+ 3.68%) 0.931s 0.998s p=0.037 n=6
Bind Time 0.183s (±25.14%) 0.160s (± 1.93%) 🟩-0.023s (-12.51%) 0.156s 0.165s p=0.044 n=6
Check Time 9.487s (± 1.47%) 8.424s (± 0.52%) 🟩-1.064s (-11.21%) 8.373s 8.468s p=0.005 n=6
Emit Time 2.938s (± 9.41%) 2.594s (± 5.46%) ~ 2.434s 2.753s p=0.128 n=6
Total Time 13.635s (± 0.94%) 12.236s (± 1.11%) 🟩-1.400s (-10.26%) 12.034s 12.380s p=0.005 n=6
webpack - native
Errors 2 2 ~ ~ ~ p=1.000 n=6
Symbols 192,430 192,430 ~ ~ ~ p=1.000 n=6
Types 340 340 ~ ~ ~ p=1.000 n=6
Memory Used 237,045k (± 0.13%) 237,147k (± 0.14%) ~ 236,732k 237,520k p=0.936 n=6
Memory Allocs 977,396 (± 0.78%) 980,704 (± 0.78%) ~ 972,756 992,945 p=0.471 n=6
Config Time 0.011s (±14.33%) 0.011s (±24.72%) ~ 0.008s 0.015s p=0.683 n=6
Parse Time 0.154s (± 3.72%) 0.154s (± 3.24%) ~ 0.147s 0.162s p=1.000 n=6
Bind Time 0s 0s ~ ~ ~ p=1.000 n=6
Check Time 0s 0s ~ ~ ~ p=1.000 n=6
Emit Time 0.049s (±25.46%) 0.044s (±26.03%) ~ 0.035s 0.063s p=0.809 n=6
Total Time 0.215s (± 4.37%) 0.211s (± 6.72%) ~ 0.196s 0.230s p=0.377 n=6
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=6
Symbols 1,064,596 1,064,596 ~ ~ ~ p=1.000 n=6
Types 392,760 392,760 ~ ~ ~ p=1.000 n=6
Memory Used 646,050k (± 0.01%) 649,053k (± 0.02%) +3,003k (+ 0.46%) 648,849k 649,239k p=0.005 n=6
Memory Allocs 5,002,408 (± 0.22%) 5,002,007 (± 0.06%) ~ 4,997,625 5,005,365 p=0.689 n=6
Config Time 0.005s (± 8.44%) 0.004s (±23.81%) ~ 0.003s 0.005s p=0.461 n=6
Parse Time 0.138s (± 6.02%) 0.136s (± 2.44%) ~ 0.131s 0.140s p=0.936 n=6
Bind Time 0.030s (±24.64%) 0.037s (±22.46%) ~ 0.025s 0.045s p=0.126 n=6
Check Time 1.304s (± 0.92%) 1.238s (± 0.68%) 🟩-0.067s (- 5.11%) 1.225s 1.251s p=0.005 n=6
Emit Time 0.001s 0.001s ~ ~ ~ p=1.000 n=6
Total Time 1.482s (± 0.88%) 1.420s (± 0.72%) 🟩-0.062s (- 4.15%) 1.411s 1.432s p=0.004 n=6
System info unknown
Hosts
  • native
Scenarios
  • Compiler-Unions - native
  • angular-1 - native
  • mui-docs - native
  • self-build-src - native
  • self-compiler - native
  • ts-pre-modules - native
  • vscode - native
  • webpack - native
  • xstate-main - native
Benchmark Name Iterations
Current pr 6
Baseline baseline 6

Developer Information:

Download Benchmarks

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

Comment thread internal/core/linkstore.go Outdated
Comment on lines +45 to +46
pageMap map[uint64]*[pageSize]V // Page table for page indices below maxPageCount
pageList []*[pageSize]V // Page map for page indices above maxPageCount
Comment thread internal/ast/utilities.go Outdated
return SymbolId(id)
}

func GetNextNodeId() NodeId {
@jakebailey

Copy link
Copy Markdown
Member

LGTM but the two copilot comments I believe are accurate.

@ahejlsberg
ahejlsberg enabled auto-merge July 22, 2026 18:14
@ahejlsberg
ahejlsberg added this pull request to the merge queue Jul 22, 2026
Merged via the queue into main with commit f60e5fc Jul 22, 2026
21 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants