~/talk

Optimizing Performance using a VM and Go Plugins

Talkat GopherCon 2020 · 2020-11-09..11-13· [go, compilers-and-language-design]
links:none on file
slides:none on file

Builds a stack-based VM bytecode compiled from parsed ASTs and a runtime with object pools, plus a transpiler that emits Go and uses Go plugins (buildmode=plugin) to load compiled run() symbols. Baseline interpreter runs ~92.5s for 100M formulas; removing double-parsing and adding pools drops cost to ~30–14.6µs/op; VM with pooling is ~14.6µs/op; plugins hit ~9.5µs/op — about a 10× speedup over original — but each plugin takes ~0.9–1.0s to compile and load.

AI-written summary · about

  1. 0:00Introduction
  2. 0:41Agenda
  3. 1:47Spreadsheets
  4. 2:55Lexing
  5. 7:34Parsing
  6. 12:47Spreadsheet
  7. 13:30Calculation Engine
  8. 20:55Performance Monitoring
  9. 23:22Performance Improvement
  10. 27:19Compile Node
  11. 29:58VM Runtime
  12. 33:33VM Performance
  13. 41:05Go Plugin
  14. 44:06Lessons Learned
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.