OXYGENHUB

Benchmarks after O10a; backlog: O10a done b8a0399319fc

Author
Andy McCall @andymccall <[email protected]>
When
· 2026-09-28 07:23 UTC
Signature
✔ signed by Andy McCall
Hash
b8a0399319fc9b989db780bb5ddbbfea659c23d57aaac890c5541780b235fe48
Depends on
1d360c91a289 59171dcff221 75036530b621
Depended on by
0bb9413f0118 978470f76e66
In bookmarks
agents-in-readme bare-hashes carried-not-removed carry-identical doctor-trust identical-sides keyless-tags main merge-remote-bookmark only-help-103 paths-for-resolutions-and-amend push-notes show-stat subrepo-pin-state switch-says
In tags
v0.1.0 v0.10.0 v0.11.0 v0.2.0 v0.3.0 v0.3.1 v0.4.0 v0.4.1 v0.4.2 v0.4.3 v0.4.4 v0.4.5 v0.4.6 v0.5.0 v0.5.1 v0.6.0 v0.7.0 v0.8.0 v0.9.0
Edits
2 atoms, 0 tree operations, 2 files

Browse the tree at this change

modified docs/backlog-overnight-2.md +1 −0
…
61 unchanged lines
62 62
- 2026-09-28 H3 done: header theme switch (dark/light/auto) and Settings → Appearance, theme cookie; auto follows the system live. Light-mode pass by headless Chrome screenshots of dashboard, overview, file, proposal, issue, settings, changes: found and fixed highlighted code drawing boxes in both themes (syntect scope `comment` colliding with the page `.comment` class; classes now `sy-` prefixed) and the band ADMIN link unreadable in light. Test `theme_is_chosen_in_settings_and_remembered_in_a_cookie`; hub spec §6.1; deployed. The code editor picks its theme at load, not live.
63 63
- 2026-09-28 O4 done: harness `crates/oxy-core/tests/bench.rs` (ignored; run by hand) and `docs/benchmarks.md`. Full run on disk took 5 h 14 min. **Andy: status and commit are slow at scale**: at 10 000 files / 5 000 changes a commit averages 3.8 s, a 10-file commit 9.1 s, a clean status 3.0 s, blame 2.9 s, peak memory 1.4 GiB; push 0.8 s, clone 3.4 s, log 0.4 s are fine. Cause: every snapshot loads and materializes the whole base state. New item O10 (moved ahead of O5) fixes it.
64 64
- 2026-09-28 V2 done: hub API `GET /notifications`, `POST /notifications/{id}/read`, `POST /notifications/read` (scope user:read; deployed). oxygenhub-vscode 0.3.0: status-bar bell with unread count across hubs, new-notification messages, Open Inbox quick pick that marks read and opens proposals/issues in the editor. Installed in both profiles (Reload Window). Tests: hub api test extended; extension pass 7 fail 0.
65 +
- 2026-09-28 O10a done: `State::maximal` was quadratic in heads (4 500 heads in the benchmark); now one walk, with a property test against the old definition. Commit reuses the snapshot's base. At 10 000 files / 5 000 changes: commit 3.8 s to 0.86 s, 10-file commit 9.1 s to 0.86 s, status 3.0 s to 0.80 s, blame 2.9 s to 0.81 s, memory 1.4 to 1.1 GiB; benchmark run 5 h 14 min to 1 h 12 min. Hub redeployed with it. O10b (manifest fast path, lazy base) remains for the per-file cost.
modified docs/benchmarks.md +28 −0
…
68 unchanged lines
69 69
callers that need it, and cache materialized snapshots per state. The
70 70
thresholds above stay as they are until then, so the harness reports the
71 71
gap rather than hiding it.
72 +
73 +
## 2026-09-28: after O10a
74 +
75 +
`State::maximal` compared every pair of heads, and the benchmark's
76 +
bookmark has about 4 500 of them (changes to different files are
77 +
independent). It now walks once; commit also stops loading the base state
78 +
twice. Same machine and size:
79 +
80 +
| Operation (10 000 files, 5 000 changes) | Before | After | Threshold | |
81 +
|---|---:|---:|---:|---|
82 +
| commit: one file (mean of 4 999) | 3 761 ms | 861 ms | 250 ms | **over** |
83 +
| status: clean working copy | 2 977 ms | 803 ms | 2 000 ms | ok |
84 +
| status: 10 files modified | 3 062 ms | 864 ms | 2 000 ms | ok |
85 +
| commit: 10 files | 9 089 ms | 861 ms | 500 ms | **over** |
86 +
| log: whole bookmark | 408 ms | 400 ms | 2 000 ms | ok |
87 +
| blame: hot file | 2 920 ms | 809 ms | 2 000 ms | ok |
88 +
| blame: ordinary file | 2 927 ms | 828 ms | 1 000 ms | ok |
89 +
| status after checkpoint | 2 873 ms | 770 ms | 2 000 ms | ok |
90 +
| push: everything | 782 ms | 742 ms | 60 000 ms | ok |
91 +
| clone: everything | 3 378 ms | 1 664 ms | 60 000 ms | ok |
92 +
| fsck | 7 955 ms | 6 872 ms | 60 000 ms | ok |
93 +
| gc | 9 489 ms | 9 526 ms | 60 000 ms | ok |
94 +
95 +
Peak resident memory: 1 145 MiB (was 1 405). The run took 1 h 12 min
96 +
(was 5 h 14 min). Commit time no longer grows with history; what remains
97 +
grows with the number of files: at 10 000 files a snapshot spends about
98 +
320 ms loading the base state, 190 ms materializing it, 130 ms walking the
99 +
working copy and 40 ms building the change. That is O10b.