Skip to content

Reject non-access targets early when matching access references - #65045

Open
Jake Bailey (jakebailey) wants to merge 1 commit into
microsoft:mainfrom
jakebailey:perf/matching-reference-access
Open

Jake Bailey (jakebailey) wants to merge 1 commit into
microsoft:mainfrom
jakebailey:perf/matching-reference-access

Conversation

@jakebailey

Copy link
Copy Markdown
Member

Just some logic moving to avoid work.

Thanks Steven (@teamchong)!

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

Copy link
Copy Markdown
Member Author

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

@typescript-automation

typescript-automation Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

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

Command Status Results
perf test this faster ✅ Started 👀 Results

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟢 Approval recommended

No active review issues remain for the access-reference matching change.

No open issues 🎉

What changed in this PR

This PR streamlines access-reference matching in the native TypeScript checker by rejecting non-access targets before resolving property names.

Changes:

  • Moves the target access-expression check earlier to avoid unnecessary work.
  • Removes redundant nesting around property-name comparison.
File Description
tsc/​internal/​checker/​flow.go Adds an early return for non-access targets in isMatchingReference.

Review effort: Balanced

@jakebailey Jake Bailey (jakebailey) added the Domain: Performance Reports of unusually slow behavior label Oct 30, 2026
@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,171k (± 0.02%) 104,146k (± 0.03%) ~ 104,030k 104,290k p=0.119 n=20
Memory Allocs 1,263,809 (± 0.01%) 1,263,748 (± 0.00%) ~ 1,263,585 1,263,954 p=0.144 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.023s (± 2.91%) 0.023s (± 3.58%) ~ 0.020s 0.029s p=0.897 n=20
Bind Time 0.008s (± 5.34%) 0.008s (± 5.41%) ~ 0.007s 0.010s p=0.803 n=20
Check Time 0.213s (± 0.98%) 0.211s (± 0.57%) ~ 0.206s 0.215s p=0.182 n=20
Emit Time 0.137s (± 1.36%) 0.137s (± 0.91%) ~ 0.132s 0.143s p=0.845 n=20
Total Time 0.385s (± 0.63%) 0.382s (± 0.49%) ~ 0.376s 0.393s p=0.124 n=20
angular-1 - native
Errors 3 3 ~ ~ ~ p=1.000 n=20
Symbols 586,573 (± 0.02%) 586,556 (± 0.01%) ~ 586,317 586,912 p=0.640 n=20
Types 241,687 (± 0.00%) 241,683 (± 0.00%) -4 (- 0.00%) 241,680 241,686 p=0.000 n=20
Memory Used 517,907k (± 0.02%) 518,012k (± 0.02%) ~ 517,620k 518,433k p=0.096 n=20
Memory Allocs 7,799,812 (± 0.14%) 7,792,693 (± 0.04%) ~ 7,785,106 7,804,906 p=0.799 n=20
Config Time 0.009s 0.009s ~ ~ ~ p=1.000 n=20
Parse Time 0.125s (± 2.26%) 0.127s (± 4.13%) ~ 0.120s 0.159s p=0.920 n=20
Bind Time 0.045s (±10.17%) 0.042s (± 9.47%) ~ 0.036s 0.064s p=0.247 n=20
Check Time 0s 0s ~ ~ ~ p=1.000 n=20
Emit Time 0.848s (± 1.04%) 0.845s (± 0.81%) ~ 0.827s 0.876s p=0.804 n=20
Total Time 1.037s (± 1.19%) 1.033s (± 1.01%) ~ 1.007s 1.081s p=0.713 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,298k (± 0.01%) 497,290k (± 0.01%) ~ 497,083k 497,523k p=0.743 n=20
Memory Allocs 12,107,681 (± 0.01%) 12,106,985 (± 0.01%) ~ 12,104,479 12,113,816 p=0.337 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.041s (± 2.17%) 0.040s (± 3.17%) ~ 0.035s 0.047s p=0.511 n=20
Bind Time 0.013s (± 8.47%) 0.014s (± 9.30%) ~ 0.012s 0.021s p=0.124 n=20
Check Time 1.000s (± 0.39%) 1.001s (± 0.55%) ~ 0.971s 1.025s p=0.387 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.083s (± 0.30%) 1.085s (± 0.43%) ~ 1.063s 1.105s p=0.330 n=20
class-transformer - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 45,376 45,376 ~ ~ ~ p=1.000 n=20
Types 7,573 7,573 ~ ~ ~ p=1.000 n=20
Memory Used 27,835k (± 0.02%) 27,837k (± 0.02%) ~ 27,808k 27,862k p=0.578 n=20
Memory Allocs 248,555 (± 0.05%) 248,554 (± 0.05%) ~ 248,066 249,062 p=0.904 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.012s (± 3.19%) 0.011s (± 3.06%) ~ 0.010s 0.012s p=0.158 n=20
Bind Time 0.003s (±10.34%) 0.004s (±12.63%) ~ 0.003s 0.006s p=0.480 n=20
Check Time 0.008s (± 5.01%) 0.008s (± 4.83%) ~ 0.007s 0.009s p=0.306 n=20
Emit Time 0.008s (± 6.32%) 0.009s (± 5.67%) ~ 0.007s 0.010s p=0.268 n=20
Total Time 0.032s (± 1.97%) 0.032s (± 1.73%) ~ 0.030s 0.034s p=0.945 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,438k (± 0.02%) 940,430k (± 0.02%) ~ 939,710k 941,478k p=0.826 n=20
Memory Allocs 12,669,636 (± 0.02%) 12,673,105 (± 0.04%) ~ 12,663,302 12,712,110 p=0.355 n=20
Config Time 0.002s (± 5.09%) 0.002s (± 5.09%) ~ 0.002s 0.003s p=1.000 n=20
Parse Time 0.154s (± 4.33%) 0.158s (± 3.91%) ~ 0.143s 0.203s p=0.118 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.973s (± 1.14%) 0.974s (± 1.35%) ~ 0.932s 1.036s p=0.973 n=20
Emit Time 0.514s (± 2.89%) 0.519s (± 2.69%) ~ 0.458s 0.568s p=0.588 n=20
Total Time 1.744s (± 1.45%) 1.749s (± 1.28%) ~ 1.683s 1.854s p=0.673 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,835,869k (± 0.07%) 1,835,571k (± 0.08%) ~ 1,830,920k 1,842,884k p=0.512 n=20
Memory Allocs 26,006,561 (± 0.17%) 25,994,134 (± 0.10%) ~ 25,906,320 26,119,580 p=0.989 n=20
Config Time 0.008s (± 2.64%) 0.009s (± 2.82%) ~ 0.008s 0.009s p=0.333 n=20
Parse Time 0.302s (± 2.20%) 0.302s (± 1.73%) ~ 0.273s 0.317s p=0.723 n=20
Bind Time 0.001s (±18.96%) 0.001s ~ ~ ~ p=1.000 n=20
Check Time 3.117s (± 1.28%) 3.138s (± 1.49%) ~ 3.005s 3.321s p=0.490 n=20
Emit Time 0.255s (± 4.69%) 0.249s (± 1.74%) ~ 0.232s 0.268s p=0.825 n=20
Total Time 4.179s (± 1.25%) 4.191s (± 1.38%) ~ 3.993s 4.412s p=0.753 n=20
sentry - native
Errors 2 2 ~ ~ ~ p=1.000 n=20
Symbols 4,793,245 4,793,245 ~ ~ ~ p=1.000 n=20
Types 2,607,045 2,606,905 -140 (- 0.01%) ~ ~ p=0.000 n=20
Memory Used 2,880,404k (± 0.03%) 2,880,896k (± 0.02%) ~ 2,878,925k 2,883,308k p=0.174 n=20
Memory Allocs 75,422,722 (± 0.26%) 75,450,423 (± 0.32%) ~ 74,872,225 76,667,588 p=0.947 n=20
Config Time 0.026s (± 1.37%) 0.026s (± 1.48%) ~ 0.025s 0.028s p=0.911 n=20
Parse Time 0.498s (± 3.84%) 0.491s (± 2.68%) ~ 0.443s 0.534s p=0.743 n=20
Bind Time 0.157s (± 8.98%) 0.167s (±11.12%) ~ 0.138s 0.268s p=0.228 n=20
Check Time 6.843s (± 1.02%) 6.845s (± 1.27%) ~ 6.645s 7.255s p=0.565 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 7.574s (± 0.95%) 7.579s (± 1.15%) ~ 7.366s 7.993s p=0.774 n=20
social-app - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 1,883,074 1,883,074 ~ ~ ~ p=1.000 n=20
Types 1,158,168 1,158,168 ~ ~ ~ p=1.000 n=20
Memory Used 972,523k (± 0.01%) 972,406k (± 0.01%) ~ 971,733k 972,873k p=0.157 n=20
Memory Allocs 13,577,538 (± 0.18%) 13,563,310 (± 0.10%) ~ 13,521,333 13,620,542 p=0.640 n=20
Config Time 0.008s 0.008s ~ ~ ~ p=1.000 n=20
Parse Time 0.158s (± 2.25%) 0.162s (± 4.28%) ~ 0.145s 0.202s p=0.615 n=20
Bind Time 0.046s (± 7.33%) 0.048s (±11.91%) ~ 0.038s 0.075s p=0.887 n=20
Check Time 1.465s (± 0.53%) 1.478s (± 0.51%) +0.012s (+ 0.85%) 1.440s 1.507s p=0.014 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.697s (± 0.43%) 1.713s (± 0.73%) ~ 1.676s 1.785s p=0.062 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,959 -4 (- 0.00%) ~ ~ p=0.000 n=20
Memory Used 1,171,018k (± 0.30%) 1,173,266k (± 0.44%) ~ 1,157,442k 1,193,837k p=0.640 n=20
Memory Allocs 47,741,394 (± 0.12%) 47,797,616 (± 0.12%) ~ 47,543,274 48,023,742 p=0.192 n=20
Config Time 0.001s (±30.45%) 0.002s (±18.87%) 🔻+0.000s (+36.36%) 0.000s 0.002s p=0.040 n=20
Parse Time 0.153s (± 1.60%) 0.151s (± 2.30%) ~ 0.140s 0.169s p=0.560 n=20
Bind Time 0.000s 0.000s (±208.60%) ~ 0.000s 0.001s p=1.000 n=20
Check Time 0.901s (± 0.83%) 0.904s (± 1.86%) ~ 0.823s 0.982s p=0.379 n=20
Emit Time 0.154s (± 2.45%) 0.160s (± 2.88%) ~ 0.139s 0.178s p=0.051 n=20
Total Time 10.508s (± 0.81%) 10.580s (± 1.98%) ~ 9.489s 11.549s p=0.201 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,601k (± 0.02%) 224,601k (± 0.02%) ~ 224,387k 224,801k p=0.952 n=20
Memory Allocs 2,401,407 (± 0.01%) 2,401,403 (± 0.02%) ~ 2,399,830 2,403,106 p=0.941 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.049s (± 2.38%) 0.050s (± 3.56%) ~ 0.044s 0.058s p=0.342 n=20
Bind Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Check Time 0.379s (± 1.00%) 0.377s (± 0.70%) ~ 0.369s 0.389s p=0.909 n=20
Emit Time 0.047s (± 5.11%) 0.048s (± 4.74%) ~ 0.041s 0.056s p=0.548 n=20
Total Time 0.503s (± 0.76%) 0.504s (± 0.60%) ~ 0.492s 0.514s p=0.480 n=20
t3code-server - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 4,350,661 4,350,661 ~ ~ ~ p=1.000 n=20
Types 3,040,644 3,040,644 ~ ~ ~ p=1.000 n=20
Memory Used 2,433,528k (± 0.02%) 2,433,328k (± 0.02%) ~ 2,431,398k 2,434,917k p=0.883 n=20
Memory Allocs 37,374,404 (± 0.05%) 37,401,957 (± 0.09%) ~ 37,304,845 37,607,831 p=0.314 n=20
Config Time 0.003s 0.003s ~ ~ ~ p=1.000 n=20
Parse Time 0.253s (± 2.53%) 0.258s (± 2.73%) ~ 0.230s 0.291s p=0.324 n=20
Bind Time 0.094s (±11.13%) 0.092s (± 8.65%) ~ 0.080s 0.140s p=0.408 n=20
Check Time 7.500s (± 0.64%) 7.460s (± 0.49%) ~ 7.309s 7.589s p=0.311 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 7.863s (± 0.60%) 7.824s (± 0.50%) ~ 7.679s 7.968s p=0.251 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,390k (± 0.01%) 331,384k (± 0.02%) ~ 331,139k 331,565k p=0.846 n=20
Memory Allocs 4,387,903 (± 0.15%) 4,388,531 (± 0.17%) ~ 4,376,287 4,444,488 p=0.758 n=20
Config Time 0.001s 0.001s (± 9.93%) ~ 0.001s 0.002s p=1.000 n=20
Parse Time 0.039s (± 3.06%) 0.042s (± 3.59%) 🔻+0.003s (+ 6.48%) 0.036s 0.047s p=0.012 n=20
Bind Time 0.014s (±10.72%) 0.013s (±12.09%) ~ 0.011s 0.021s p=0.481 n=20
Check Time 0.567s (± 0.78%) 0.578s (± 1.48%) +0.011s (+ 1.91%) 0.553s 0.624s p=0.037 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.640s (± 0.84%) 0.655s (± 1.70%) +0.015s (+ 2.40%) 0.628s 0.723s p=0.017 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,548k (± 0.02%) 193,534k (± 0.01%) ~ 193,435k 193,619k p=0.465 n=20
Memory Allocs 1,317,998 (± 0.01%) 1,318,031 (± 0.02%) ~ 1,317,295 1,319,167 p=0.941 n=20
Config Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Parse Time 0.043s (± 2.50%) 0.044s (± 3.53%) ~ 0.038s 0.049s p=0.731 n=20
Bind Time 0.020s (± 6.56%) 0.020s (± 5.16%) ~ 0.017s 0.025s p=0.443 n=20
Check Time 0.294s (± 0.70%) 0.295s (± 0.70%) ~ 0.284s 0.303s p=0.691 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.363s (± 0.48%) 0.365s (± 0.56%) ~ 0.353s 0.371s p=0.078 n=20
vscode - native
Errors 11 11 ~ ~ ~ p=1.000 n=20
Symbols 7,501,141 7,501,141 ~ ~ ~ p=1.000 n=20
Types 4,403,999 4,403,982 -17 (- 0.00%) ~ ~ p=0.000 n=20
Memory Used 5,209,548k (± 0.01%) 5,210,028k (± 0.02%) ~ 5,206,682k 5,215,103k p=0.461 n=20
Memory Allocs 57,188,054 (± 0.03%) 57,183,404 (± 0.02%) ~ 57,160,410 57,268,602 p=0.529 n=20
Config Time 0.034s (± 1.78%) 0.035s (± 6.95%) ~ 0.032s 0.057s p=0.382 n=20
Parse Time 0.906s (± 1.86%) 0.901s (± 2.17%) ~ 0.800s 0.985s p=0.525 n=20
Bind Time 0.332s (± 6.43%) 0.346s (± 9.81%) ~ 0.304s 0.550s p=0.551 n=20
Check Time 8.075s (± 0.67%) 8.065s (± 0.74%) ~ 7.747s 8.238s p=0.995 n=20
Emit Time 2.849s (± 4.86%) 2.939s (± 6.06%) ~ 2.661s 3.760s p=0.410 n=20
Total Time 12.256s (± 0.93%) 12.346s (± 1.26%) ~ 11.966s 13.156s p=0.433 n=20
webpack - native
Errors 616 616 ~ ~ ~ p=1.000 n=20
Symbols 923,808 923,808 ~ ~ ~ p=1.000 n=20
Types 649,949 649,949 ~ ~ ~ p=1.000 n=20
Memory Used 698,706k (± 0.01%) 698,727k (± 0.02%) ~ 698,035k 699,236k p=0.547 n=20
Memory Allocs 6,570,713 (± 0.04%) 6,572,952 (± 0.05%) ~ 6,563,897 6,584,824 p=0.314 n=20
Config Time 0.004s 0.004s ~ ~ ~ p=1.000 n=20
Parse Time 0.141s (± 2.74%) 0.142s (± 2.98%) ~ 0.129s 0.166s p=0.984 n=20
Bind Time 0.047s (± 9.33%) 0.044s (± 9.48%) ~ 0.037s 0.068s p=0.093 n=20
Check Time 1.071s (± 0.83%) 1.077s (± 1.17%) ~ 1.051s 1.148s p=0.941 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 1.288s (± 0.82%) 1.290s (± 1.21%) ~ 1.255s 1.383s p=0.587 n=20
xstate-main - native
Errors 0 0 ~ ~ ~ p=1.000 n=20
Symbols 640,490 640,490 ~ ~ ~ p=1.000 n=20
Types 387,984 387,984 ~ ~ ~ p=1.000 n=20
Memory Used 350,934k (± 0.02%) 350,892k (± 0.02%) ~ 350,492k 351,177k p=0.383 n=20
Memory Allocs 3,991,481 (± 0.07%) 3,990,896 (± 0.06%) ~ 3,984,116 3,999,533 p=0.779 n=20
Config Time 0.001s 0.001s ~ ~ ~ p=1.000 n=20
Parse Time 0.060s (± 2.86%) 0.061s (± 2.83%) ~ 0.055s 0.068s p=0.226 n=20
Bind Time 0.020s (± 8.66%) 0.023s (±12.83%) ~ 0.018s 0.034s p=0.147 n=20
Check Time 0.424s (± 0.66%) 0.426s (± 0.99%) ~ 0.412s 0.444s p=0.577 n=20
Emit Time 0.000s 0.000s ~ ~ ~ p=1.000 n=20
Total Time 0.510s (± 0.63%) 0.517s (± 1.02%) ~ 0.499s 0.534s p=0.068 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

Status: Not started

Development

Successfully merging this pull request may close these issues.

2 participants