Skip to content

Commit 29c9c72

Browse files
committed
perf: add benchmark for MKTreeStoreSqlite in signer
1 parent d24be7c commit 29c9c72

File tree

3 files changed

+49
-0
lines changed

3 files changed

+49
-0
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mithril-signer/Cargo.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ homepage = { workspace = true }
99
license = { workspace = true }
1010
repository = { workspace = true }
1111

12+
[[bench]]
13+
name = "mktree_store_sqlite"
14+
harness = false
15+
1216
[dependencies]
1317
anyhow = "1.0.79"
1418
async-trait = "0.1.77"
@@ -42,6 +46,7 @@ tokio = { version = "1.37.0", features = ["full"] }
4246
tikv-jemallocator = { version = "0.6.0", optional = true }
4347

4448
[dev-dependencies]
49+
criterion = { version = "0.5.1", features = ["html_reports", "async_tokio"] }
4550
httpmock = "0.7.0"
4651
mithril-common = { path = "../mithril-common" }
4752
mockall = "0.13.0"
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion};
2+
use mithril_common::crypto_helper::{MKTree, MKTreeNode};
3+
use mithril_signer::MKTreeStoreSqlite;
4+
5+
// Shortcuts for magnitudes: K for thousand, M for million
6+
const K: usize = 1_000;
7+
const M: usize = 1_000 * K;
8+
const TOTAL_LEAVES_BENCHES: &[usize] = &[K, 10 * K, 100 * K, M, 10 * M];
9+
10+
fn generate_merkle_tree(total_leaves: usize) -> MKTree<MKTreeStoreSqlite> {
11+
MKTree::new(
12+
(0..total_leaves)
13+
.map(|i| format!("bench-{i}").into())
14+
.collect::<Vec<MKTreeNode>>()
15+
.as_slice(),
16+
)
17+
.unwrap()
18+
}
19+
20+
fn create_merkle_tree_root_benches(c: &mut Criterion) {
21+
let mut group = c.benchmark_group("create_merkle_tree_signer_sqlite");
22+
for total_leaves in TOTAL_LEAVES_BENCHES.iter() {
23+
group.bench_with_input(
24+
BenchmarkId::from_parameter(total_leaves),
25+
total_leaves,
26+
|b, &total_leaves| {
27+
b.iter(|| {
28+
let mk_tree = generate_merkle_tree(total_leaves);
29+
mk_tree.compute_root().unwrap();
30+
});
31+
},
32+
);
33+
}
34+
group.finish();
35+
}
36+
37+
criterion_group!(
38+
name=benches;
39+
config = Criterion::default().sample_size(10);
40+
targets=
41+
create_merkle_tree_root_benches,
42+
);
43+
criterion_main!(benches);

0 commit comments

Comments
 (0)