You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit d8065db
Browse filesBrowse the repository at this point in the historyBrowse files
Index checker members without redundant symbol maps
Instantiated and inherited object types retain a name-to-symbol map
beside their ordered property list. Those maps duplicate symbol pointers
and string headers across millions of types, increasing both live heap
and the amount of memory the collector must scan.
Use the existing property list as the source of truth for immutable
named members. Small types need no separate index; larger types need
only pointer-free integer slots. Keep map semantics for mutable module
exports, reserved members, mismatched names, and recursive member
resolution.
VS Code src, six samples versus cold value-symbol links:
goos: linux
goarch: amd64
pkg: github.com/microsoft/TypeScript/tsc/internal/checker
cpu: Intel(R) Core(TM) i9-10900K CPU @ 3.70GHz
│ vscode-cold-links.txt │ vscode-member-index-owned.txt │
│ retained-B │ retained-B vs base │
ExternalProgram-20 4.874Gi ± 0% 4.503Gi ± 0% -7.61% (p=0.002 n=6)
│ vscode-cold-links.txt │ vscode-member-index-owned.txt │
│ scan-B │ scan-B vs base │
ExternalProgram-20 4.508Gi ± 0% 4.062Gi ± 0% -9.89% (p=0.002 n=6)
│ vscode-cold-links.txt │ vscode-member-index-owned.txt │
│ B/op │ B/op vs base │
ExternalProgram-20 6.043Gi ± 0% 5.982Gi ± 0% -1.00% (p=0.002 n=6)
│ vscode-cold-links.txt │ vscode-member-index-owned.txt │
│ allocs/op │ allocs/op vs base │
ExternalProgram-20 26.23M ± 0% 26.04M ± 0% -0.71% (p=0.002 n=6)
All 321 semantic diagnostics and 10284 files are identical. CLI
diagnostic text and compiler counts match exactly. Instruction
measurements remain noisy; this change does not claim an established CPU
improvement. No GC tuning is used.
0 commit comments