Optimize account hash CumulativeOffset index from vec to 2-element array (#33839)

* optimize account hash merkle tree index from vec to 2-element array

* typo

---------

Co-authored-by: HaoranYi <haoran.yi@solana.com>
This commit is contained in:
HaoranYi 2023-10-24 13:26:16 -05:00 committed by GitHub
parent 381d2254eb
commit 9064b8b2a2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 7 additions and 6 deletions

View File

@ -334,7 +334,8 @@ const _: () = assert!(
#[derive(Default, Debug, PartialEq, Eq)] #[derive(Default, Debug, PartialEq, Eq)]
pub struct CumulativeOffset { pub struct CumulativeOffset {
pub index: Vec<usize>, /// Since the source data is at most 2D, two indexes are enough.
pub index: [usize; 2],
pub start_offset: usize, pub start_offset: usize,
} }
@ -416,7 +417,7 @@ impl CumulativeOffsets {
.filter_map(|(i, len)| { .filter_map(|(i, len)| {
if len > 0 { if len > 0 {
let result = CumulativeOffset { let result = CumulativeOffset {
index: vec![i], index: [i, i],
start_offset: total_count, start_offset: total_count,
}; };
total_count += len; total_count += len;
@ -1373,7 +1374,7 @@ mod tests {
cumulative_offsets = Vec::with_capacity(raw.len() * v_outer.len()); cumulative_offsets = Vec::with_capacity(raw.len() * v_outer.len());
} }
cumulative_offsets.push(CumulativeOffset { cumulative_offsets.push(CumulativeOffset {
index: vec![i, j], index: [i, j],
start_offset: total_count, start_offset: total_count,
}); });
total_count += len; total_count += len;
@ -2126,7 +2127,7 @@ mod tests {
fn test_accountsdb_cumulative_find() { fn test_accountsdb_cumulative_find() {
let input = CumulativeOffsets { let input = CumulativeOffsets {
cumulative_offsets: vec![CumulativeOffset { cumulative_offsets: vec![CumulativeOffset {
index: vec![0], index: [0; 2],
start_offset: 0, start_offset: 0,
}], }],
total_count: 0, total_count: 0,
@ -2136,11 +2137,11 @@ mod tests {
let input = CumulativeOffsets { let input = CumulativeOffsets {
cumulative_offsets: vec![ cumulative_offsets: vec![
CumulativeOffset { CumulativeOffset {
index: vec![0], index: [0; 2],
start_offset: 0, start_offset: 0,
}, },
CumulativeOffset { CumulativeOffset {
index: vec![1], index: [1; 2],
start_offset: 2, start_offset: 2,
}, },
], ],