rename CumulativeOffset in preparation of 2d support (#15338)

This commit is contained in:
Jeff Washington (jwash) 2021-02-15 20:57:05 -06:00 committed by GitHub
parent b3256aa722
commit 78a176fc00
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 21 additions and 19 deletions

View File

@ -235,13 +235,13 @@ impl CalculateHashIntermediate {
}
#[derive(Default, Debug)]
struct CumulativeOffset1D {
pub index: usize,
struct CumulativeOffset {
pub index: Vec<usize>,
pub start_offset: usize,
}
impl CumulativeOffset1D {
pub fn new(index: usize, start_offset: usize) -> CumulativeOffset1D {
impl CumulativeOffset {
pub fn new(index: Vec<usize>, start_offset: usize) -> CumulativeOffset {
Self {
index,
start_offset,
@ -252,13 +252,13 @@ impl CumulativeOffset1D {
// Allow retreiving &[start..end] from a logical src: Vec<T>, where src is really Vec<Vec<T>> (or later Vec<Vec<Vec<T>>>)
// This model prevents callers from having to flatten which saves both working memory and time.
#[derive(Default, Debug)]
struct CumulativeOffsets1D {
cumulative_offsets: Vec<CumulativeOffset1D>,
struct CumulativeOffsets {
cumulative_offsets: Vec<CumulativeOffset>,
total_count: usize,
}
impl CumulativeOffsets1D {
pub fn from_raw<T>(raw: &[Vec<T>]) -> CumulativeOffsets1D {
impl CumulativeOffsets {
pub fn from_raw<T>(raw: &[Vec<T>]) -> CumulativeOffsets {
let mut total_count: usize = 0;
let cumulative_offsets: Vec<_> = raw
.iter()
@ -266,7 +266,7 @@ impl CumulativeOffsets1D {
.filter_map(|(i, v)| {
let len = v.len();
if len > 0 {
let result = CumulativeOffset1D::new(i, total_count);
let result = CumulativeOffset::new(vec![i], total_count);
total_count += len;
Some(result)
} else {
@ -288,7 +288,8 @@ impl CumulativeOffsets1D {
let index = &self.cumulative_offsets[i];
if start >= index.start_offset {
let start = start - index.start_offset;
return &raw[index.index][start..];
const DIMENSION: usize = 0;
return &raw[index.index[DIMENSION]][start..];
}
}
panic!(
@ -3775,7 +3776,7 @@ impl AccountsDB {
return Err(MismatchedAccountHash);
}
let cumulative_offsets = CumulativeOffsets1D::from_raw(&hashes);
let cumulative_offsets = CumulativeOffsets::from_raw(&hashes);
scan.stop();
let hash_total = cumulative_offsets.total_count;
@ -4017,7 +4018,7 @@ impl AccountsDB {
// flatten vec/vec into 1d vec of hashes in order
let mut hash_time = Measure::start("flat2");
let offsets = CumulativeOffsets1D::from_raw(&hashes);
let offsets = CumulativeOffsets::from_raw(&hashes);
let get_slice = |start: usize| -> &[Hash] { offsets.get_slice(&hashes, start) };
let hash = Self::compute_merkle_root_from_slices(offsets.total_count, fanout, get_slice);
@ -5404,15 +5405,16 @@ pub mod tests {
#[test]
fn test_accountsdb_cumulative_offsets1_d() {
let input = vec![vec![0, 1], vec![], vec![2, 3, 4], vec![]];
let cumulative = CumulativeOffsets1D::from_raw(&input);
let cumulative = CumulativeOffsets::from_raw(&input);
let src: Vec<_> = input.clone().into_iter().flatten().collect();
let len = src.len();
assert_eq!(cumulative.total_count, len);
assert_eq!(cumulative.cumulative_offsets.len(), 2); // 2 non-empty vectors
assert_eq!(cumulative.cumulative_offsets[0].index, 0);
assert_eq!(cumulative.cumulative_offsets[1].index, 2);
const DIMENSION: usize = 0;
assert_eq!(cumulative.cumulative_offsets[0].index[DIMENSION], 0);
assert_eq!(cumulative.cumulative_offsets[1].index[DIMENSION], 2);
assert_eq!(cumulative.cumulative_offsets[0].start_offset, 0);
assert_eq!(cumulative.cumulative_offsets[1].start_offset, 2);
@ -5425,15 +5427,15 @@ pub mod tests {
}
let input = vec![vec![], vec![0, 1], vec![], vec![2, 3, 4], vec![]];
let cumulative = CumulativeOffsets1D::from_raw(&input);
let cumulative = CumulativeOffsets::from_raw(&input);
let src: Vec<_> = input.clone().into_iter().flatten().collect();
let len = src.len();
assert_eq!(cumulative.total_count, len);
assert_eq!(cumulative.cumulative_offsets.len(), 2); // 2 non-empty vectors
assert_eq!(cumulative.cumulative_offsets[0].index, 1);
assert_eq!(cumulative.cumulative_offsets[1].index, 3);
assert_eq!(cumulative.cumulative_offsets[0].index[DIMENSION], 1);
assert_eq!(cumulative.cumulative_offsets[1].index[DIMENSION], 3);
assert_eq!(cumulative.cumulative_offsets[0].start_offset, 0);
assert_eq!(cumulative.cumulative_offsets[1].start_offset, 2);
@ -5446,7 +5448,7 @@ pub mod tests {
}
let input: Vec<Vec<u32>> = vec![vec![]];
let cumulative = CumulativeOffsets1D::from_raw(&input);
let cumulative = CumulativeOffsets::from_raw(&input);
let src: Vec<_> = input.into_iter().flatten().collect();
let len = src.len();