-
Notifications
You must be signed in to change notification settings - Fork 5
bench-rollup: shared harness + comparison adapters + interactive charts #19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 15 commits
Commits
Show all changes
110 commits
Select commit
Hold shift + click to select a range
d3caa8a
feat(bench): stub bench_common module with public API surface (Task 0.1)
elijahr cbc6892
feat(bench): implement BMFEmitter with alpha-sorted output (Task 0.2)
elijahr 65e3c6b
feat(bench): implement Stats helpers (Task 0.4)
elijahr dff9a84
feat(bench): implement Histogram top-K + reservoir percentile (Task 0.3)
elijahr 22063d5
feat(bench): implement runThroughputHarness (Task 0.5)
elijahr ddf8318
feat(bench): implement runLatencyHarness (Task 0.6)
elijahr 71f2133
feat(bench): add merge_bmf.py BMF JSON merge utility (Task 0.7)
elijahr fafbddd
feat(bench): add 5 missing lockfreequeues adapters (Task 0.8)
elijahr 02231a5
PR 0 Task 0.9: rename existing adapters with `_adapter` suffix and ex…
elijahr eb91ff4
PR 0 Task 0.10: native BMF emission via --bmf-out= flag in bench_thro…
elijahr 3244691
PR 0 Task 0.11: bench.yml — native BMF + merge step, drop legacy parser
elijahr 0eb0747
PR 0 Task 0.12: delete legacy bmf_adapter.py + bench_main.nim, refact…
elijahr c44d43f
PR 0 Task 0.13: render_readme.nim consumes new BMF shape
elijahr 6d725c6
PR 0 Task 0.14: CHANGELOG entry under [Unreleased] for bench-rollup PR 0
elijahr 44901c6
fix(bench): plug heap-allocated queue leaks in latency and throughput…
elijahr b330905
fix(bench): destroy queue before manager; guard zero-duration throughput
elijahr 05268e7
fix(bench): guard zero-thread harness; expose adapter queues; drop no…
elijahr a4b1ad9
perf(bench): bulk-percentile to avoid 5x reservoir sort per latency run
elijahr ca00905
fix(render_readme): bump row cap; restore platform/cores/timestamp line
elijahr 31caf8a
ci: pin sibling-dep clones to nim-debra v0.6.0 / nim-typestates v0.7.0
elijahr bd08d14
ci(bench): cost gate — drop feat/** PR base; require `bench` label
elijahr a619494
docs(bench): align Quick Start CI command with current 1M/500k budget
elijahr 38bfc2a
ci(bench): wire t_bench_common into nimble benchtests + CI job
elijahr 26e140e
PR 1 Task 1.1: BenchLatencyRuns/BenchLatencyMessageCount intdefines
elijahr e70d630
PR 1 Task 1.2: rewrite bench_latency.nim onto bench_common.runLatency…
elijahr 833deac
PR 1 Tasks 1.3 + 1.4: bench-latency job + N-input merge step in bench…
elijahr 34b62a2
PR 1 Task 1.5: smoke test for multi-measure-per-slug merge
elijahr 2b6ff9b
PR 1 Task 1.7: CHANGELOG entry under [Unreleased] for bench-rollup PR 1
elijahr 0452fc4
fix(bench-latency): correct prefix on unknown-flag error; rename grou…
elijahr 9586c6b
fix(bench): grant bench-upload contents/actions read; isolate artifac…
elijahr 3e26b6c
fix(bench): print p999 in latency stdout for operator visibility
elijahr e8fcca9
test(bench_latency): isolate test workspaces with createTempDir + ExeExt
elijahr 2684687
ci(bench-latency): pin sibling deps to v0.6.0/v0.7.0; wire t_bench_la…
elijahr 75d124f
PR 2 Task 2.1: capture pre-split slug-set fixture for deletion-safety
elijahr 2df9466
PR 2 Task 2.3: bench_spsc binary (Sipsic 1p1c)
elijahr f3e1427
PR 2 Task 2.4: bench_mpsc binary (Mupsic 1p1c, 2p1c, 4p1c)
elijahr 62a54ad
PR 2 Task 2.5: bench_mpmc binary (Mupmuc grid + 8p8c, Sipmuc, channels)
elijahr e8d3f5f
PR 2 Task 2.6: bench_unbounded binary (4 unbounded variants)
elijahr 5615613
PR 2 Task 2.7: superset_check.py + deletion-safety wiring
elijahr 0523acd
PR 2 Task 2.8: bench.yml matrix over 5 topology binaries + per-step t…
elijahr 3686f51
PR 2 Task 2.9: 5-input union test in test_merge_bmf.py
elijahr 7085bd7
PR 2 Task 2.10: delete bench_throughput.nim, rewire consumers
elijahr 4bada5e
PR 2 Task 2.11: CHANGELOG entry under [Unreleased] for bench-rollup PR 2
elijahr 6f71cc5
fix(bench): tighten bench_unbounded CI shape to fit 18-min budget
elijahr a81d483
fix(bench): gate oversubscribed C>=4 unbounded shapes behind a define
elijahr e896c6d
fix(bench): document p95 in BMF schema; clean up runner.py fragment f…
elijahr bd4ed7b
fix(bench): run upload on partial failures; correct timeout-comment
elijahr 0fb3791
fix(bench): drop unparseable BMF fragments before merge
elijahr b9129ce
perf(bench): backoffOnPeerWait in busy-spin loops; document teardown …
elijahr 04a4e42
docs(bench_unbounded): defend `create(T)` as alloc0, not destructor-o…
elijahr ab19733
fix(bench): pass -d:danger in runner.py build_nim() to match CI
elijahr 4ff8aa8
test: t_unbounded_padding red — segment alloc returns 16B-aligned, ex…
elijahr 8967192
feat(internal): add aligned_alloc.allocAligned via posix_memalign
elijahr dde5724
fix(unbounded): pad Segment fields and base-align via posix_memalign
elijahr ef378f2
feat(bench): add loony_adapter (unbounded MPMC) behind compile gate
elijahr cf7a324
feat(bench): add boost_lockfree_queue adapter (MPMC bounded, nim cpp)
elijahr 42e3ded
feat(bench): add boost_lockfree_spsc adapter (SPSC bounded, nim cpp)
elijahr 8ef5218
feat(bench): add bench-ffi-crossbeam Rust cdylib (ArrayQueue + SegQueue)
elijahr 5458d38
feat(bench): add crossbeam_array_queue adapter (MPMC bounded, FFI cdy…
elijahr f3de15c
feat(bench): add crossbeam_seg_queue adapter (MPMC unbounded, FFI cdy…
elijahr 672c2a2
feat(bench): wire MVP comparison adapters into bench_spsc/mpmc/unbounded
elijahr a45dc02
ci(bench): add boost+loony soft-skip flow per design §2.6
elijahr 123fddc
ci(bench): add bench-comparison.yml (Crossbeam-only nightly cron)
elijahr b064282
docs: comparison MVP section in benchmarks/README + THIRD_PARTY_LICENSES
elijahr 66d92f6
docs(changelog): add Track 3 (Comparison MVP) entries under [Unreleased]
elijahr aa77352
fix(bench): align Loony and Crossbeam slug prefixes with 3-segment ta…
elijahr d713fd9
fix(unbounded): use allocAligned for auto-create manager allocations
elijahr eb5aa12
fix(loony-adapter): close empty/pop TOCTOU window; document encoding …
elijahr d644170
fix(bench): honor alignof(T); explicit token perms; loony encoding range
elijahr 28f2279
fix(unbounded): Windows alloc, head padding, finally-block teardown
elijahr 9c9ced6
fix(bench/crossbeam): emit link flags from shared module
elijahr 41a08f3
fix(bench-comparison): pin Nim sibling deps; abort-on-FFI-panic; corr…
elijahr d36775b
ci(bench): wire t_bench_adapters into nimble benchtests
elijahr 977583e
feat(bench): add 4 PR-4 comparison adapters + vendored MoodyCamel
elijahr cfd28b7
feat(bench): wire 4 PR-4 comparison adapters into bench binaries
elijahr 9ab02ba
ci(bench): add PR-4 install + soft-skip steps for 4 new adapters
elijahr 6a31a36
docs(bench): PR-4 license, vendoring, README, CHANGELOG entries
elijahr c048389
fix(bench): use canonical 3-segment slug shape for comparison adapters
elijahr b973986
fix(adapters): standardize make/cleanup naming; reflect T in moodycam…
elijahr 367d41a
fix(moodycamel): nothrow init; fail fast on nullptr handle
elijahr b849bcc
fix(moodycamel): cast for portability; clamp 32-bit capacity hint
elijahr 9ba12b0
fix(moodycamel-adapter): static-assert sizeof(T)==8 and reject ref types
elijahr 9b3e9f2
docs(threading-channels-adapter): drop reference to non-existent dein…
elijahr 8ab5624
chore(docs): vendor uPlot 1.6.27 IIFE bundle for bench charts
elijahr b73c814
feat(docs): add bench-charts.js + CSS + BMF contract test
elijahr 1699700
feat(docs): embed uPlot chart in benchmarks.md + register page in nav
elijahr 3d383da
ci(bench): add paths-ignore + actor-guard loop-prevention scaffolding
elijahr 48044ec
ci(bench): publish merged BMF snapshot to docs assets on devel push
elijahr 1690a53
ci(docs): verify mike asset endpoint after dev deploy
elijahr 7bc0550
docs(license): record uPlot vendoring + extend .gitattributes
elijahr fc51767
docs(readme): hand-curate BENCHMARKS summary; remove render_readme.nim
elijahr d18490b
docs(changelog): record PR 5 (interactive uPlot charts) under Unreleased
elijahr c30e554
fix(docs): correct chart asset paths; reuse ResizeObserver and destro…
elijahr a1bb5ac
fix(docs): retry snapshot push; portable Pages URL; drop non-positive Y
elijahr a27b171
fix(bench): dedupe contents permission key in bench-upload
elijahr 36af7f2
fix(charts): vendor uPlot CSS, optimize sort, math.isfinite
elijahr c35dbe3
fix(charts): composite series key, O(1) tooltip lookup, drop dup CSS …
elijahr b01168c
fix(bench): drop [skip ci] on snapshot push; loosen SLUG_RE to match …
elijahr 8c1290d
feat(bench): latency thresholds + p999/max measures + K=5000
elijahr 4c2bfa4
docs(bench): correct K=5000 rationale; harness averages per-run perce…
elijahr 1920490
ci(bench): execute bench harness tests via nimble benchtests
elijahr a4a147e
docs(bench_latency): correct max-vs-heap-head comment
elijahr a699801
Switch from PR-Agent to Momus
elijahr 462db8b
Update momus workflow: rename pr-review.yml -> momus.yml, OPENROUTER_…
elijahr bd45c5f
test(aligned_alloc): use freeAligned symmetrically with allocAligned
elijahr eb56a15
chore(release): cut 4.2.0
elijahr 1850919
Revert "chore(release): cut 4.2.0"
elijahr 82d807c
Merge devel (typestates 0.7 uplift) into bench-rollup
elijahr 2486b48
ci: track nim-debra/nim-typestates main, not stale tags
elijahr 7be39db
Address Momus C findings: comparison threshold + percentile docstring
elijahr File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
BOT-A2 — Low (quality)
README documentation/CMD-config discrepancy: Quick Start section shows old 100K CI budget
The « Quick Start (local) » section shows
-d:MessageCount=100000and labels it « Same, but the CI wall-clock budget (100k × 5) ». The actual CI workflow in.github/workflows/bench.ymlnow uses-d:MessageCount=1000000(1M) plus two new defines (-d:UnboundedMupsicRuns=3 -d:UnboundedMupsicMessageCount=500000) that the Quick Start section omits entirely. The « Cloud benchmarking (Bencher.dev) » section further down correctly reflects the 1M / 3-run CI shape. The inconsistent Quick Start block may lead devs to reproduce CI results with the wrong parameters.