Skip to content

Replace most ID usage with pointers - #64767

Draft
Jake Bailey (jakebailey) wants to merge 1 commit into
microsoft:mainfrom
jakebailey:redo-less-ids
Draft

Jake Bailey (jakebailey) wants to merge 1 commit into
microsoft:mainfrom
jakebailey:redo-less-ids

Conversation

@jakebailey

Copy link
Copy Markdown
Member

Using pointers is cheaper because we don't have to ask for their IDs, which incurs atomic load/adds. And, by not pulling on them when not needed, we can increase ID locality a bit.

While this does increase key size for types as their IDs are only 32-bit, there does not appear to be any performance different, and only barely more memory for that one change, so I think it's probably worth avoiding the extra load.

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

Copy link
Copy Markdown
Member Author

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

@typescript-automation

typescript-automation Bot commented Oct 13, 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 133,230k (± 0.06%) 133,288k (± 0.05%) ~ 133,158k 133,490k p=0.213 n=12
Memory Allocs 2,190,229 (± 0.01%) 2,191,078 (± 0.01%) +849 (+ 0.04%) 2,190,854 2,191,324 p=0.000 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.041s (± 1.88%) 0.041s (± 3.85%) ~ 0.037s 0.046s p=0.955 n=12
Bind Time 0.013s (±12.78%) 0.012s (±12.45%) ~ 0.010s 0.016s p=0.597 n=12
Check Time 0.498s (± 0.57%) 0.496s (± 0.65%) ~ 0.489s 0.507s p=0.192 n=12
Emit Time 0.272s (± 1.92%) 0.271s (± 2.93%) ~ 0.257s 0.293s p=0.541 n=12
Total Time 0.830s (± 0.53%) 0.827s (± 0.85%) ~ 0.811s 0.845s p=0.310 n=12
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=12
Symbols 845,807 (± 0.08%) 846,214 (± 0.07%) ~ 844,735 847,346 p=0.478 n=12
Types 248,124 (± 0.00%) 248,124 (± 0.00%) ~ 248,122 248,125 p=0.767 n=12
Memory Used 746,163k (± 0.02%) 746,570k (± 0.01%) +408k (+ 0.05%) 746,411k 746,834k p=0.000 n=12
Memory Allocs 12,918,732 (± 0.06%) 12,911,878 (± 0.05%) -6,855 (- 0.05%) 12,905,508 12,940,819 p=0.002 n=12
Config Time 0.017s 0.016s 🟩-0.001s (- 5.88%) ~ ~ p=0.000 n=12
Parse Time 0.254s (± 3.14%) 0.256s (± 2.11%) ~ 0.244s 0.266s p=0.989 n=12
Bind Time 0.063s (± 8.75%) 0.058s (± 1.02%) ~ 0.055s 0.059s p=0.075 n=12
Check Time 0s 0s ~ ~ ~ p=1.000 n=12
Emit Time 1.570s (± 1.12%) 1.561s (± 0.72%) ~ 1.535s 1.597s p=0.640 n=12
Total Time 1.916s (± 1.15%) 1.904s (± 0.66%) ~ 1.883s 1.946s p=0.434 n=12
mui-docs - native
Errors 11,405 11,405 ~ ~ ~ p=1.000 n=12
Symbols 4,339,337 4,339,337 ~ ~ ~ p=1.000 n=12
Types 1,379,387 1,379,387 ~ ~ ~ p=1.000 n=12
Memory Used 2,774,741k (± 0.07%) 2,795,494k (± 0.06%) +20,753k (+ 0.75%) 2,792,240k 2,800,584k p=0.000 n=12
Memory Allocs 32,726,595 (± 0.06%) 32,715,016 (± 0.09%) ~ 32,666,990 32,836,032 p=0.219 n=12
Config Time 0.017s 0.017s (± 1.99%) -0.001s (- 2.94%) 0.016s 0.017s p=0.014 n=12
Parse Time 0.483s (± 4.49%) 0.492s (± 2.47%) ~ 0.465s 0.523s p=0.854 n=12
Bind Time 0.002s 0.002s ~ ~ ~ p=1.000 n=12
Check Time 8.842s (± 0.35%) 8.860s (± 0.21%) +0.018s (+ 0.21%) 8.801s 8.906s p=0.043 n=12
Emit Time 0.451s (±10.57%) 0.430s (± 4.82%) ~ 0.417s 0.535s p=0.385 n=12
Total Time 10.544s (± 0.52%) 10.562s (± 0.39%) ~ 10.488s 10.736s p=0.370 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,624,986k (± 1.04%) 1,619,511k (± 0.65%) ~ 1,597,843k 1,653,112k p=0.843 n=12
Memory Allocs 92,151,822 (± 0.20%) 92,138,119 (± 0.19%) ~ 91,606,827 92,549,995 p=0.755 n=12
Config Time 0.004s (±12.12%) 0.004s (± 9.04%) ~ 0.003s 0.004s p=1.000 n=12
Parse Time 0.190s (± 4.21%) 0.198s (± 2.90%) ~ 0.181s 0.211s p=0.131 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 1.810s (± 0.55%) 1.804s (± 0.64%) ~ 1.770s 1.830s p=0.640 n=12
Emit Time 0.311s (± 4.24%) 0.307s (± 4.72%) ~ 0.261s 0.334s p=0.640 n=12
Total Time 23.482s (± 0.71%) 23.380s (± 0.91%) ~ 22.707s 23.852s p=0.630 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 296,030k (± 0.02%) 296,338k (± 0.02%) +308k (+ 0.10%) 296,200k 296,480k p=0.000 n=12
Memory Allocs 4,621,343 (± 0.01%) 4,621,321 (± 0.01%) ~ 4,619,892 4,622,481 p=0.887 n=12
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=12
Parse Time 0.110s (± 4.30%) 0.109s (± 4.71%) ~ 0.100s 0.122s p=0.618 n=12
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Check Time 1.036s (± 0.37%) 1.035s (± 0.36%) ~ 1.025s 1.045s p=0.989 n=12
Emit Time 0.147s (± 8.32%) 0.148s (± 8.35%) ~ 0.105s 0.168s p=0.660 n=12
Total Time 1.348s (± 1.05%) 1.347s (± 1.25%) ~ 1.293s 1.381s p=0.944 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 256,659k (± 0.02%) 256,796k (± 0.02%) +137k (+ 0.05%) 256,668k 256,952k p=0.000 n=12
Memory Allocs 1,614,128 (± 0.02%) 1,613,959 (± 0.01%) ~ 1,613,556 1,614,529 p=0.319 n=12
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Parse Time 0.099s (± 2.81%) 0.095s (± 4.11%) ~ 0.086s 0.104s p=0.079 n=12
Bind Time 0.036s (±11.06%) 0.038s (±13.27%) ~ 0.028s 0.048s p=0.466 n=12
Check Time 0.811s (± 0.66%) 0.811s (± 0.85%) ~ 0.798s 0.829s p=0.989 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 0.959s (± 0.61%) 0.959s (± 0.57%) ~ 0.948s 0.973s p=0.989 n=12
vscode - native
Errors 396 396 ~ ~ ~ p=1.000 n=12
Symbols 11,300,551 11,300,551 ~ ~ ~ p=1.000 n=12
Types 3,725,313 3,725,313 ~ ~ ~ p=1.000 n=12
Memory Used 6,453,514k (± 0.01%) 6,481,252k (± 0.01%) +27,737k (+ 0.43%) 6,480,389k 6,482,558k p=0.000 n=12
Memory Allocs 55,469,084 (± 0.03%) 55,459,405 (± 0.01%) ~ 55,452,338 55,476,063 p=0.347 n=12
Config Time 0.075s (± 0.38%) 0.075s (± 0.38%) -0.001s (- 0.66%) 0.074s 0.075s p=0.036 n=12
Parse Time 1.836s (± 3.77%) 1.863s (± 3.09%) ~ 1.709s 1.982s p=0.551 n=12
Bind Time 0.613s (±21.61%) 0.566s (±18.19%) ~ 0.447s 0.893s p=0.486 n=12
Check Time 13.758s (± 1.11%) 13.858s (± 0.99%) ~ 13.454s 14.048s p=0.164 n=12
Emit Time 5.259s (± 9.50%) 4.925s (±10.58%) ~ 4.232s 6.267s p=0.541 n=12
Total Time 21.627s (± 1.95%) 21.370s (± 2.08%) ~ 20.764s 22.485s p=0.551 n=12
webpack - native
Errors 585 585 ~ ~ ~ p=1.000 n=12
Symbols 1,325,376 1,325,376 ~ ~ ~ p=1.000 n=12
Types 624,198 624,198 ~ ~ ~ p=1.000 n=12
Memory Used 949,691k (± 0.01%) 951,130k (± 0.01%) +1,440k (+ 0.15%) 950,774k 951,413k p=0.000 n=12
Memory Allocs 6,705,981 (± 0.03%) 6,705,649 (± 0.03%) ~ 6,702,471 6,711,756 p=0.843 n=12
Config Time 0.009s 0.009s ~ ~ ~ p=1.000 n=12
Parse Time 0.301s (± 4.43%) 0.300s (± 3.88%) ~ 0.278s 0.333s p=1.000 n=12
Bind Time 0.085s (±17.73%) 0.094s (±17.02%) ~ 0.064s 0.140s p=0.401 n=12
Check Time 2.028s (± 0.95%) 2.032s (± 1.16%) ~ 1.986s 2.085s p=0.744 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 2.459s (± 0.69%) 2.471s (± 0.69%) ~ 2.436s 2.516s p=0.284 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 391,024 391,024 ~ ~ ~ p=1.000 n=12
Memory Used 548,254k (± 0.02%) 550,284k (± 0.01%) +2,030k (+ 0.37%) 550,114k 550,553k p=0.000 n=12
Memory Allocs 4,891,520 (± 0.05%) 4,893,894 (± 0.07%) ~ 4,883,989 4,902,717 p=0.378 n=12
Config Time 0.003s 0.003s ~ ~ ~ p=1.000 n=12
Parse Time 0.147s (± 3.23%) 0.147s (± 2.26%) ~ 0.139s 0.156s p=0.659 n=12
Bind Time 0.038s (±13.49%) 0.038s (± 9.93%) ~ 0.033s 0.048s p=0.850 n=12
Check Time 1.018s (± 1.03%) 1.035s (± 0.99%) +0.017s (+ 1.63%) 1.018s 1.070s p=0.005 n=12
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=12
Total Time 1.215s (± 0.91%) 1.232s (± 0.84%) +0.017s (+ 1.37%) 1.208s 1.257s p=0.016 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

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