-
Notifications
You must be signed in to change notification settings - Fork 30
test: improve BTreeMap bench coverage and readability #285
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
Conversation
|
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.
Pull Request Overview
This PR refactors the BTreeMap benchmarks by introducing support for unbounded types via a new FixedVec
, removing all legacy V1 benchmarks, and updating the main benchmark harness for coverage and readability improvements.
- Add a
FixedVec
type withStorable
implementation to cover unbounded-size tests. - Remove the generated
canbench_results.csv
file to avoid stale benchmark data. - Update
benchmarks/src/main.rs
to importFixedVec
and provide aRandom
implementation for it.
Reviewed Changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.
File | Description |
---|---|
src/storable.rs | Introduced FixedVec , implemented Storable |
canbench_results.csv | Deleted outdated benchmark results |
benchmarks/src/main.rs | Imported FixedVec and added Random impl |
Comments suppressed due to low confidence (3)
src/storable.rs:201
- [nitpick] The method name
from
may be confusing and doesn't implement the standardFrom
trait. Rename it tonew
or implementFrom<&[u8]> for FixedVec<N>
for consistency with Rust conventions.
pub fn from(slice: &[u8]) -> Self {
src/storable.rs:192
- [nitpick] Consider expanding the doc comment to explain that
FixedVec
is always padded to lengthN
, and document the behavior ofmax_size
and the constructor.
/// Byte-vector for testing size N; otherwise just a Vec<u8>.
src/storable.rs:210
- There are no unit tests for
FixedVec
. Adding tests to verify padding,max_size
, serialization, and deserialization behavior would improve confidence in its correctness.
impl<const N: usize> Storable for FixedVec<N> {
@dsarlis I am reviving this PR again, removed V1 benchmarks and synced to the new canbench reporting format. PTAL |
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.
Still adding new benchmarks must be handled with care because pocket_ic has a limitation on the number of tests (10k) and the total length of test names (20k chars). This limit is going to be increased soon.
From the PR description, is this still true? I suppose not because the new version of canbench should have lifted this restriction.
This PR refactors BTreeMap benchmarks to increase coverage and improve readability.
Current benchmark setup has some challenges:
New benchmark setup:
FixedVec
for v2)Still adding new benchmarks must be handled with care because pocket_ic has a limitation on the number of tests (10k) and the total length of test names (20k chars). This limit is going to be increased soon.Getting closer to this limit increases running time up to 7 minutes and increases significantly the size of canbench report, which is currently is not very readable.
Current setup supports:
CSV report in google sheets.