Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions fuzz/fuzz_targets/arbitrary_ops/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -190,12 +190,12 @@ impl ReadBitmapOperation {
v.n_values_run_containers =
expected.n_values_run_containers.try_into().unwrap();
v.n_values_bitset_containers = expected.n_values_bitset_containers.into();
// The n_bytes_* fields are not directly comparable:
// they are based on the number of bytes of _capacity_ of the
// containers, which depends on the allocation strategy.
// n_bytes_array_containers is not directly comparable:
// it is based on the _capacity_ of the array containers,
// which depends on the allocation strategy.
// v.n_bytes_array_containers = expected.n_bytes_array_containers.into();
// v.n_bytes_run_containers = expected.n_bytes_run_containers.into();
// v.n_bytes_bitset_containers = expected.n_bytes_bitset_containers.into();
v.n_bytes_run_containers = expected.n_bytes_run_containers.into();
v.n_bytes_bitset_containers = expected.n_bytes_bitset_containers.into();
v.max_value = x.maximum();
v.min_value = x.minimum();
v.cardinality = x.cardinality();
Expand Down
8 changes: 4 additions & 4 deletions roaring/src/bitmap/statistics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use core::mem;
use crate::bitmap::container::Container;
use crate::RoaringBitmap;

use super::store::Store;
use super::store::{Store, BITMAP_BYTES};

/// Detailed statistics on the composition of a bitmap.
#[derive(Clone, Copy, PartialEq, Debug)]
Expand Down Expand Up @@ -53,7 +53,7 @@ impl RoaringBitmap {
/// assert_eq!(statistics.n_values_array_containers, 99);
/// assert_eq!(statistics.n_values_run_containers, 0);
/// assert_eq!(statistics.n_values_bitset_containers, 0);
/// assert_eq!(statistics.n_bytes_array_containers, 512);
/// assert_eq!(statistics.n_bytes_array_containers, 256);
/// assert_eq!(statistics.n_bytes_run_containers, 0);
/// assert_eq!(statistics.n_bytes_bitset_containers, 0);
/// assert_eq!(statistics.max_value, Some(99));
Expand All @@ -78,13 +78,13 @@ impl RoaringBitmap {
Store::Array(array) => {
cardinality += array.len();
n_values_array_containers += array.len() as u32;
n_bytes_array_containers += (array.capacity() * mem::size_of::<u32>()) as u64;
n_bytes_array_containers += (array.capacity() * mem::size_of::<u16>()) as u64;
n_array_containers += 1;
}
Store::Bitmap(bitmap) => {
cardinality += bitmap.len();
n_values_bitset_containers += bitmap.len();
n_bytes_bitset_containers += bitmap.capacity() as u64;
n_bytes_bitset_containers += BITMAP_BYTES as u64;
n_bitset_containers += 1;
}
Store::Run(runs) => {
Expand Down
4 changes: 0 additions & 4 deletions roaring/src/bitmap/store/bitmap_store.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,6 @@ impl BitmapStore {
BitmapStore { len: 0, bits: Box::new([0; BITMAP_LENGTH]) }
}

pub fn capacity(&self) -> usize {
BITMAP_LENGTH * u64::BITS as usize
}

pub fn try_from(len: u64, bits: Box<[u64; BITMAP_LENGTH]>) -> Result<BitmapStore, Error> {
let actual_len = bits.iter().map(|v| v.count_ones() as u64).sum();
if len != actual_len {
Expand Down
8 changes: 8 additions & 0 deletions roaring/tests/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -167,3 +167,11 @@ fn statistics_full_run() {
assert_eq!(stats.cardinality, expected);
assert_eq!(stats.n_values_run_containers, expected);
}

#[test]
fn statistics_bitset_bytes() {
let bitmap = RoaringBitmap::from_iter((0..10_000).map(|v| v * 2));
let stats = bitmap.statistics();
assert_eq!(stats.n_bitset_containers, 1);
assert_eq!(stats.n_bytes_bitset_containers, 8192);
}
Loading