Skip to content

Bound Go symbol reader memory and add ELF comparison benchmarks#318

Draft
brianrob wants to merge 1 commit into
microsoft:mainfrom
brianrob:brianrob/go-benchmarks
Draft

Bound Go symbol reader memory and add ELF comparison benchmarks#318
brianrob wants to merge 1 commit into
microsoft:mainfrom
brianrob:brianrob/go-benchmarks

Conversation

@brianrob

Copy link
Copy Markdown
Member

Summary

  • change Go symbol resolution to iterate through `.gopclntab` instead of loading the entire table
  • bound reader memory to 196 KiB, independent of binary size
  • simplify decoding around one shared cursor with two fixed read windows
  • add reproducible Go fixtures and benchmarks comparing Go and ELF resolution

Performance

Using matched fixtures with 1,273 symbols:

Benchmark ELF Go Result
Reader setup 29.39 µs 46.00 µs Go setup is 1.57× slower
Full lifecycle 2.373 ms 153.82 µs Go is 15.43× faster
Mapping resolution 2.656 ms 341.58 µs Go is 7.78× faster
ELF+Go union mapping 2.656 ms ELF-only 2.877 ms union 8.32% overhead
Production resolution 3.128 ms unstripped ELF+Go 592.78 µs stripped Go Stripped Go is 5.28× faster

Iterate through Go symbol data with bounded read windows and add reproducible ELF comparison benchmarks.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 9c64d054-73e4-458f-af58-0055c55b437d
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.

1 participant