Skip to content

Commit 1867b6b

Browse files
starknet_committer: add number of empty leaves to TimeMeasurementTrait
1 parent fbfea7b commit 1867b6b

File tree

4 files changed

+24
-3
lines changed

4 files changed

+24
-3
lines changed

crates/starknet_committer/src/block_committer/commit.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use std::collections::HashMap;
33
use async_trait::async_trait;
44
use starknet_api::core::{ClassHash, ContractAddress, Nonce};
55
use starknet_patricia::patricia_merkle_tree::types::{NodeIndex, SortedLeafIndices};
6+
use starknet_types_core::felt::Felt;
67
use tracing::{info, warn};
78

89
use crate::block_committer::errors::BlockCommitmentError;
@@ -41,15 +42,21 @@ pub trait CommitBlockTrait: Send {
4142
let actual_storage_updates = input.state_diff.actual_storage_updates();
4243
let actual_classes_updates = input.state_diff.actual_classes_updates();
4344
// Record the number of modifications.
45+
let n_empty_leaves = actual_storage_updates
46+
.values()
47+
.map(|storage_entry| {
48+
storage_entry.values().filter(|value| value.0 == Felt::ZERO).count()
49+
})
50+
.sum::<usize>();
4451
let n_storage_tries_modifications =
4552
actual_storage_updates.values().map(|value| value.len()).sum();
4653
measurements.set_number_of_modifications(
4754
n_storage_tries_modifications,
4855
n_contracts_trie_modifications,
4956
actual_classes_updates.len(),
57+
n_empty_leaves,
5058
);
5159
// Reads - fetch_nodes.
52-
5360
measurements.start_measurement(Action::Read);
5461
let roots =
5562
trie_reader.read_roots(input.initial_read_context).await.map_err(ForestError::from)?;

crates/starknet_committer/src/block_committer/measurements_util.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ pub trait MeasurementsTrait {
6767
n_storage_tries_modifications: usize,
6868
n_contracts_trie_modifications: usize,
6969
n_classes_trie_modifications: usize,
70+
n_empty_leaves: usize,
7071
);
7172
}
7273

@@ -88,6 +89,7 @@ impl MeasurementsTrait for NoMeasurements {
8889
_n_storage_tries_modifications: usize,
8990
_n_contracts_trie_modifications: usize,
9091
_n_classes_trie_modifications: usize,
92+
_n_empty_leaves: usize,
9193
) {
9294
}
9395
}
@@ -105,6 +107,7 @@ pub struct BlockModificationsCounts {
105107
pub storage_tries: usize,
106108
pub contracts_trie: usize,
107109
pub classes_trie: usize,
110+
pub empty_leaves: usize,
108111
}
109112

110113
#[derive(Default, Clone)]
@@ -167,11 +170,13 @@ impl MeasurementsTrait for SingleBlockMeasurements {
167170
n_storage_tries_modifications: usize,
168171
n_contracts_trie_modifications: usize,
169172
n_classes_trie_modifications: usize,
173+
n_empty_leaves: usize,
170174
) {
171175
self.block_measurement.modifications_counts = BlockModificationsCounts {
172176
storage_tries: n_storage_tries_modifications,
173177
contracts_trie: n_contracts_trie_modifications,
174178
classes_trie: n_classes_trie_modifications,
179+
empty_leaves: n_empty_leaves,
175180
};
176181
}
177182
}

crates/starknet_committer_cli/src/utils.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,13 @@ impl MeasurementsTrait for BenchmarkMeasurements {
8181
n_storage_tries_modifications: usize,
8282
n_contracts_trie_modifications: usize,
8383
n_classes_trie_modifications: usize,
84+
n_empty_leaves: usize,
8485
) {
8586
self.current_measurement.set_number_of_modifications(
8687
n_storage_tries_modifications,
8788
n_contracts_trie_modifications,
8889
n_classes_trie_modifications,
90+
n_empty_leaves,
8991
);
9092
}
9193
}

crates/starknet_committer_cli/src/utils_test.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,15 @@ const WRITE_DURATION: u64 = 100;
1515
const N_READ_ENTRIES: usize = 100;
1616
const N_WRITE_ENTRIES: usize = 100;
1717
const N_MODIFICATIONS: usize = 100;
18+
const N_EMPTY_LEAVES: usize = 10;
1819

1920
async fn measure_block(measurements: &mut BenchmarkMeasurements) {
20-
measurements.set_number_of_modifications(N_MODIFICATIONS, N_MODIFICATIONS, N_MODIFICATIONS);
21+
measurements.set_number_of_modifications(
22+
N_MODIFICATIONS,
23+
N_MODIFICATIONS,
24+
N_MODIFICATIONS,
25+
N_EMPTY_LEAVES,
26+
);
2127
measurements.start_measurement(Action::EndToEnd);
2228
measurements.start_measurement(Action::Read);
2329
sleep(Duration::from_millis(READ_DURATION)).await;
@@ -65,7 +71,8 @@ fn assert_block_measurement(measurements: &BenchmarkMeasurements, number_of_bloc
6571
BlockModificationsCounts {
6672
storage_tries: N_MODIFICATIONS,
6773
contracts_trie: N_MODIFICATIONS,
68-
classes_trie: N_MODIFICATIONS
74+
classes_trie: N_MODIFICATIONS,
75+
empty_leaves: N_EMPTY_LEAVES,
6976
}
7077
);
7178
}

0 commit comments

Comments
 (0)