···11+# odoc Performance Investigation — Round 2
22+33+Ongoing notebook for the next phase of odoc performance work, continuing from the `perf-bench-base` branch (merged into main as of `9357d7fd`).
44+55+## Prior art
66+77+- Original plan: `doc/plans/2026-02-15-performance-investigation.md` on standalone odoc `perf-investigation` branch
88+- Round 1 execution: `perf-bench-base` branch, session log `~/.claude/projects/-cache-jons-agent-workspace-odoc-pp/5f6e8907-5c90-46cc-b1c7-06f4de7484da.jsonl` (through 2026-04-13)
99+1010+## Round 1 — landed optimizations
1111+1212+- Physical-equality sharing + `is_identity` short-circuits in `src/xref2/subst.ml`
1313+- Sharing in `reresolve_*` and `prefix_signature` in `src/xref2/tools.ml`
1414+- `Of_Lang` path-conversion sharing in `src/xref2/component.ml`
1515+- Per-env `Shape_reduce.Make` cache in `src/xref2/shape_tools.cppo.ml`
1616+- `open struct` module-alias fix in `src/xref2/find.ml` (resolved 76K unresolved xrefs on `core`)
1717+- `ODOC_STATMEMPROF` instrumentation in `src/odoc/bin/main.ml`
1818+1919+## Round 2 — open threads
2020+2121+(Fill in as investigation proceeds.)
2222+2323+## Log
2424+2525+### YYYY-MM-DD — <topic>
2626+2727+Hypothesis:
2828+2929+Measurement:
3030+3131+Result:
3232+3333+Next: