Skip to content

Commit

Permalink
switches to criterion
Browse files Browse the repository at this point in the history
  • Loading branch information
behzadnouri committed Jan 24, 2025
1 parent 9abf0a9 commit e4e43e8
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 44 deletions.
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions ledger/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ features = ["lz4"]

[dev-dependencies]
bs58 = { workspace = true }
criterion = { workspace = true }
solana-account-decoder = { workspace = true }
solana-logger = { workspace = true }
solana-runtime = { workspace = true, features = ["dev-context-only-utils"] }
Expand All @@ -118,6 +119,7 @@ name = "blockstore"

[[bench]]
name = "make_shreds_from_entries"
harness = false

[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu"]
Expand Down
79 changes: 35 additions & 44 deletions ledger/benches/make_shreds_from_entries.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#![feature(test)]
#![allow(clippy::arithmetic_side_effects)]
extern crate test;
use {
criterion::{black_box, criterion_group, criterion_main, Criterion},
rand::Rng,
solana_entry::entry::Entry,
solana_ledger::shred::{ProcessShredsStats, ReedSolomonCache, Shred, Shredder},
Expand All @@ -10,7 +9,6 @@ use {
transaction::Transaction,
},
std::iter::repeat_with,
test::Bencher,
};

fn make_dummy_hash<R: Rng>(rng: &mut R) -> Hash {
Expand Down Expand Up @@ -69,10 +67,15 @@ fn make_shreds_from_entries<R: Rng>(
reed_solomon_cache,
stats,
);
(std::hint::black_box(data), std::hint::black_box(code))
(black_box(data), black_box(code))
}

fn run_make_shreds_from_entries(bencher: &mut Bencher, data_size: usize, is_last_in_slot: bool) {
fn run_make_shreds_from_entries(
name: &str,
c: &mut Criterion,
num_packets: usize,
is_last_in_slot: bool,
) {
let mut rng = rand::thread_rng();
let slot = 315_892_061 + rng.gen_range(0..=100_000);
let parent_offset = rng.gen_range(1..=u16::MAX);
Expand All @@ -84,6 +87,7 @@ fn run_make_shreds_from_entries(bencher: &mut Bencher, data_size: usize, is_last
)
.unwrap();
let keypair = Keypair::new();
let data_size = num_packets * PACKET_DATA_SIZE;
let entries = make_dummy_entries(&mut rng, data_size);
let chained_merkle_root = Some(make_dummy_hash(&mut rng));
let reed_solomon_cache = ReedSolomonCache::default();
Expand All @@ -101,49 +105,36 @@ fn run_make_shreds_from_entries(bencher: &mut Bencher, data_size: usize, is_last
&mut stats,
);
}
bencher.iter(|| {
let (data, code) = make_shreds_from_entries(
&mut rng,
&shredder,
&keypair,
&entries,
is_last_in_slot,
chained_merkle_root,
&reed_solomon_cache,
&mut stats,
);
std::hint::black_box(data);
std::hint::black_box(code);
c.bench_function(name, |b| {
b.iter(|| {
let (data, code) = make_shreds_from_entries(
&mut rng,
&shredder,
&keypair,
&entries,
is_last_in_slot,
chained_merkle_root,
&reed_solomon_cache,
&mut stats,
);
black_box(data);
black_box(code);
})
});
}

macro_rules! make_bench {
($name:ident, $size:literal, $last:literal) => {
#[bench]
fn $name(bencher: &mut Bencher) {
run_make_shreds_from_entries(
bencher,
$size * PACKET_DATA_SIZE, // data_size
$last, // is_last_in_slot
fn bench_make_shreds_from_entries(c: &mut Criterion) {
for is_last_in_slot in [false, true] {
for num_packets in [16, 20, 24, 28, 32, 48, 64, 96, 128, 256] {
let name = format!(
"bench_make_shreds_from_entries_{}{}",
if is_last_in_slot { "last_" } else { "" },
num_packets
);
run_make_shreds_from_entries(&name, c, num_packets, is_last_in_slot);
}
};
}
}

make_bench!(bench_make_shreds_from_entries_016, 16, false);
make_bench!(bench_make_shreds_from_entries_024, 24, false);
make_bench!(bench_make_shreds_from_entries_032, 32, false);
make_bench!(bench_make_shreds_from_entries_048, 48, false);
make_bench!(bench_make_shreds_from_entries_064, 64, false);
make_bench!(bench_make_shreds_from_entries_096, 96, false);
make_bench!(bench_make_shreds_from_entries_128, 128, false);
make_bench!(bench_make_shreds_from_entries_256, 256, false);

make_bench!(bench_make_shreds_from_entries_last_016, 16, true);
make_bench!(bench_make_shreds_from_entries_last_024, 24, true);
make_bench!(bench_make_shreds_from_entries_last_032, 32, true);
make_bench!(bench_make_shreds_from_entries_last_048, 48, true);
make_bench!(bench_make_shreds_from_entries_last_064, 64, true);
make_bench!(bench_make_shreds_from_entries_last_096, 96, true);
make_bench!(bench_make_shreds_from_entries_last_128, 128, true);
make_bench!(bench_make_shreds_from_entries_last_256, 256, true);
criterion_group!(benches, bench_make_shreds_from_entries,);
criterion_main!(benches);

0 comments on commit e4e43e8

Please sign in to comment.