Repository navigation
Add Ci grungraun; Fix 6 simple byte read regression; Add Protocol Benchmarks - #682
Merged
Merged
Conversation
Collaborator
Author
|
@Simon-Calbert-Aerospacelab in #677 you mentioned that pipeline'ing benchmarks are driving the decision you made in |
Collaborator
Author
|
The benchmark CI I added/changed is failing. But hopefully it's just benches against master which are expected to fail. |
Collaborator
Author
|
I need to update for #684 |
wcampbell0x2a
force-pushed
the
wc/ci-gungraun-and-bitrun-derive-guard
branch
from
September 24, 2026 03:58
03fe9af to
288f941
Compare
* Add criterion for measuring on CI (non-quiet infra). This will hopefully lead to good benchmarks to use in merge requests, while keeping the regular criterion for wall-time, which is still very usefull since callgrind is just estimating the cputime per instruction. * Copy the existing tests into shared shapes usable by both.
* Fix regression fonud in be_six_bytes_aligned_x128. * Apply batching logic only if the fields are not whole-width reading. For example, on a plain u8 field read with no bit-reads. This uses the u64 and shift/mask logic. This was greatly needed to cover the regression of be_six_bytes_aligned_x128. This also should work over the problem found in #677 regarding protocol pipeline issues. * I benchmarked this over a multi-protocol benchmark (in which we should add) and it shows gains (also shows gains in the micro-benchmark of be_six_bytes_aligned_x128.
* Add testing to confirm the comment above read_bits_uint_msb0 where having code that the branch predictor can't help with quickly makes the code pattern that we currently have required. The code didn't really mention the branch predictor, but I bet that's what they were hitting. Code generated using coding agent.
sharksforarms
force-pushed
the
wc/ci-gungraun-and-bitrun-derive-guard
branch
from
October 18, 2026 00:44
288f941 to
6cec88f
Compare
sharksforarms
force-pushed
the
wc/ci-gungraun-and-bitrun-derive-guard
branch
from
October 18, 2026 00:45
6cec88f to
f2f29c2
Compare
sharksforarms
approved these changes
Oct 18, 2026
Open
This was referenced Oct 19, 2026
Closed
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
See commits. as they will be easier to review as commits since I moved some code around.
422b79c bench: Use gungraun to easily compare instr counts
lead to good benchmarks to use in merge requests, while keeping
the regular criterion for wall-time, which is still very usefull since
callgrind is just estimating the cputime per instruction.
187a48b Keep whole-byte field runs on the byte path
For example, on a plain u8 field read with no bit-reads. This uses
the u64 and shift/mask logic. This was greatly needed to cover
the regression of be_six_bytes_aligned_x128. This also should work
over the problem found in perf: read and write a run of adjacent bit fields in one call #677 regarding protocol pipeline issues.
add) and it shows gains (also shows gains in the micro-benchmark
of be_six_bytes_aligned_x128.
537552b Move plan_bits_run and friends into common mod
6a73d81 test: Add protocol benchmarking to evade branch prediction
having code that the branch predictor can't help with quickly makes
the code pattern that we currently have required. The code didn't really
mention the branch predictor, but I bet that's what they were hitting.
f2f29c2 ci: run benchmark suite in Docker
Keep only the callgrind benchmark, which gives stable instruction
counts. The criterion wall-clock job gave noisy results on CI runners.