Skip to content

Commit

Permalink
fix criterion groups
Browse files Browse the repository at this point in the history
  • Loading branch information
hinto-janai committed Dec 3, 2024
1 parent c50b6c2 commit d096a5f
Show file tree
Hide file tree
Showing 24 changed files with 211 additions and 134 deletions.
2 changes: 2 additions & 0 deletions Cargo.lock

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

6 changes: 6 additions & 0 deletions criterion/cuprate-blockchain/benches/block.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,14 @@ criterion_group! {
}
criterion_main!(benches);

fn group() -> String {
format!("{} (block)", cuprate_criterion_blockchain::GROUP)
}

/// Inner function for benchmarking [`block::add_block`].
#[expect(clippy::significant_drop_tightening)]
fn add_block_inner(c: &mut Criterion, function_name: &str, block: &VerifiedBlockInformation) {
let mut c = c.benchmark_group(group());
let env = cuprate_criterion_blockchain::TmpEnv::new();

c.bench_function(function_name, |b| {
Expand Down Expand Up @@ -74,6 +79,7 @@ fn add_block_v16_tx0(c: &mut Criterion) {
/// Inner function for benchmarking [`alt_block::add_alt_block`].
#[expect(clippy::significant_drop_tightening)]
fn add_alt_block_inner(c: &mut Criterion, function_name: &str, block: &VerifiedBlockInformation) {
let mut c = c.benchmark_group(group());
let env = cuprate_criterion_blockchain::TmpEnv::new();

// We must have at least 1 block or else `add_alt_block` will panic.
Expand Down
2 changes: 2 additions & 0 deletions criterion/cuprate-blockchain/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,5 @@ mod tmp_env;

pub use blocks::generate_fake_blocks;
pub use tmp_env::TmpEnv;

pub const GROUP: &str = "cuprate_blockchain";
1 change: 1 addition & 0 deletions criterion/cuprate-cryptonight/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ cuprate-cryptonight = { workspace = true }

criterion = { workspace = true }
function_name = { workspace = true }
paste = { workspace = true }

[[bench]]
name = "main"
Expand Down
26 changes: 11 additions & 15 deletions criterion/cuprate-cryptonight/benches/hash.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
use std::time::Duration;

use criterion::{black_box, criterion_group, criterion_main, Criterion};
use function_name::named;

use cuprate_cryptonight::{
cryptonight_hash_r, cryptonight_hash_v0, cryptonight_hash_v1, cryptonight_hash_v2,
Expand All @@ -13,12 +12,8 @@ use cuprate_cryptonight::{
criterion_group! {
name = benches;
// Criterion suggests that higher measurement time is required for these hash functions.
config = Criterion::default().measurement_time(Duration::from_secs(8));
targets =
r_8, r_64, r_512, r_4096, r_65536,
v0_8, v0_64, v0_512, v0_4096, v0_65536,
v1_8, v1_64, v1_512, v1_4096, v1_65536,
v2_8, v2_64, v2_512, v2_4096, v2_65536,
config = Criterion::default().measurement_time(Duration::from_secs(30));
targets = hash,
}

criterion_main!(benches);
Expand All @@ -35,12 +30,13 @@ macro_rules! impl_hash_benchmark {
$fn_name:ident => ($($input:expr_2021),* $(,)?)
),* $(,)?
}
)*) => {
$(
)*) => { paste::paste! {
fn hash(c: &mut Criterion) {
let mut c = c.benchmark_group(format!("{}", cuprate_criterion_cryptonight::GROUP));

$(
#[named]
fn $fn_name(c: &mut Criterion) {
c.bench_function(function_name!(), |b| {
$(
c.bench_function(stringify!($fn_name), |b| {
b.iter(|| {
drop(
black_box(
Expand All @@ -51,10 +47,10 @@ macro_rules! impl_hash_benchmark {
);
});
});
}
)*
)*
)*
};
}
}}
}

impl_hash_benchmark! {
Expand Down
2 changes: 2 additions & 0 deletions criterion/cuprate-cryptonight/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
//! Benchmark lib for `cuprate-cryptonight`.
#![allow(unused_crate_dependencies, reason = "used in benchmarks")]

pub const GROUP: &str = "cuprate_cryptonight";
25 changes: 25 additions & 0 deletions criterion/cuprate-database/benches/db.rs
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,10 @@ criterion_group! {
}
criterion_main!(benches);

fn group() -> String {
format!("{} (db)", cuprate_criterion_database::GROUP)
}

//---------------------------------------------------------------------------------------------------- DatabaseRo
// Read-only table operations.
// This uses `TxRw + TablesMut` briefly to insert values, then
Expand All @@ -66,6 +70,7 @@ criterion_main!(benches);
/// [`DatabaseRo::get`]
#[named]
fn ro_get(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new().with_key_value();
let env_inner = env.env.env_inner();
let tx_ro = env_inner.tx_ro().unwrap();
Expand All @@ -81,6 +86,7 @@ fn ro_get(c: &mut Criterion) {
/// [`DatabaseRo::len`]
#[named]
fn ro_len(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new().with_key_value();
let env_inner = env.env.env_inner();
let tx_ro = env_inner.tx_ro().unwrap();
Expand All @@ -96,6 +102,7 @@ fn ro_len(c: &mut Criterion) {
/// [`DatabaseRo::first`]
#[named]
fn ro_first(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new().with_key_value();
let env_inner = env.env.env_inner();
let tx_ro = env_inner.tx_ro().unwrap();
Expand All @@ -111,6 +118,7 @@ fn ro_first(c: &mut Criterion) {
/// [`DatabaseRo::last`]
#[named]
fn ro_last(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new().with_key_value();
let env_inner = env.env.env_inner();
let tx_ro = env_inner.tx_ro().unwrap();
Expand All @@ -126,6 +134,7 @@ fn ro_last(c: &mut Criterion) {
/// [`DatabaseRo::is_empty`]
#[named]
fn ro_is_empty(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new().with_key_value();
let env_inner = env.env.env_inner();
let tx_ro = env_inner.tx_ro().unwrap();
Expand All @@ -141,6 +150,7 @@ fn ro_is_empty(c: &mut Criterion) {
/// [`DatabaseRo::contains`]
#[named]
fn ro_contains(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new().with_key_value();
let env_inner = env.env.env_inner();
let tx_ro = env_inner.tx_ro().unwrap();
Expand All @@ -161,6 +171,7 @@ fn ro_contains(c: &mut Criterion) {
/// [`DatabaseRw::get`]
#[named]
fn rw_get(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new().with_key_value();
let env_inner = env.env.env_inner();
let tx_rw = env_inner.tx_rw().unwrap();
Expand All @@ -176,6 +187,7 @@ fn rw_get(c: &mut Criterion) {
/// [`DatabaseRw::len`]
#[named]
fn rw_len(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new().with_key_value();
let env_inner = env.env.env_inner();
let tx_rw = env_inner.tx_rw().unwrap();
Expand All @@ -191,6 +203,7 @@ fn rw_len(c: &mut Criterion) {
/// [`DatabaseRw::first`]
#[named]
fn rw_first(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new().with_key_value();
let env_inner = env.env.env_inner();
let tx_rw = env_inner.tx_rw().unwrap();
Expand All @@ -206,6 +219,7 @@ fn rw_first(c: &mut Criterion) {
/// [`DatabaseRw::last`]
#[named]
fn rw_last(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new().with_key_value();
let env_inner = env.env.env_inner();
let tx_rw = env_inner.tx_rw().unwrap();
Expand All @@ -221,6 +235,7 @@ fn rw_last(c: &mut Criterion) {
/// [`DatabaseRw::is_empty`]
#[named]
fn rw_is_empty(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new().with_key_value();
let env_inner = env.env.env_inner();
let tx_rw = env_inner.tx_rw().unwrap();
Expand All @@ -236,6 +251,7 @@ fn rw_is_empty(c: &mut Criterion) {
/// [`DatabaseRw::contains`]
#[named]
fn rw_contains(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new().with_key_value();
let env_inner = env.env.env_inner();
let tx_rw = env_inner.tx_rw().unwrap();
Expand All @@ -252,6 +268,7 @@ fn rw_contains(c: &mut Criterion) {
/// [`DatabaseIter::get_range`]
#[named]
fn get_range(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new().with_key_value_100();
let env_inner = env.env.env_inner();
let tx_ro = env_inner.tx_ro().unwrap();
Expand All @@ -270,6 +287,7 @@ fn get_range(c: &mut Criterion) {
/// [`DatabaseIter::iter`]
#[named]
fn iter(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new().with_key_value_100();
let env_inner = env.env.env_inner();
let tx_ro = env_inner.tx_ro().unwrap();
Expand All @@ -288,6 +306,7 @@ fn iter(c: &mut Criterion) {
/// [`DatabaseIter::keys`]
#[named]
fn keys(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new().with_key_value_100();
let env_inner = env.env.env_inner();
let tx_ro = env_inner.tx_ro().unwrap();
Expand All @@ -306,6 +325,7 @@ fn keys(c: &mut Criterion) {
/// [`DatabaseIter::values`]
#[named]
fn values(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new().with_key_value_100();
let env_inner = env.env.env_inner();
let tx_ro = env_inner.tx_ro().unwrap();
Expand All @@ -325,6 +345,7 @@ fn values(c: &mut Criterion) {
/// [`DatabaseRw::put`]
#[named]
fn put(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new();
let env_inner = env.env.env_inner();
let tx_rw = env_inner.tx_rw().unwrap();
Expand All @@ -343,6 +364,7 @@ fn put(c: &mut Criterion) {
/// [`DatabaseRw::delete`]
#[named]
fn delete(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new();
let env_inner = env.env.env_inner();
let tx_rw = env_inner.tx_rw().unwrap();
Expand Down Expand Up @@ -372,6 +394,7 @@ fn delete(c: &mut Criterion) {
/// [`DatabaseRw::pop_first`]
#[named]
fn pop_first(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new();
let env_inner = env.env.env_inner();
let tx_rw = env_inner.tx_rw().unwrap();
Expand Down Expand Up @@ -401,6 +424,7 @@ fn pop_first(c: &mut Criterion) {
/// [`DatabaseRw::pop_last`]
#[named]
fn pop_last(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new();
let env_inner = env.env.env_inner();
let tx_rw = env_inner.tx_rw().unwrap();
Expand Down Expand Up @@ -430,6 +454,7 @@ fn pop_last(c: &mut Criterion) {
/// [`DatabaseRw::take`]
#[named]
fn take(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new();
let env_inner = env.env.env_inner();
let tx_rw = env_inner.tx_rw().unwrap();
Expand Down
13 changes: 13 additions & 0 deletions criterion/cuprate-database/benches/env.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ criterion_group! {
}
criterion_main!(benches);

fn group() -> String {
format!("{} (env)", cuprate_criterion_database::GROUP)
}

// FIXME: This function is hard to time due to:
// - heed errors
// - "too many open files" errors
Expand All @@ -56,6 +60,7 @@ criterion_main!(benches);
/// [`Env::env_inner`].
#[named]
fn env_inner(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new();

c.bench_function(function_name!(), |b| {
Expand All @@ -68,6 +73,7 @@ fn env_inner(c: &mut Criterion) {
/// [`EnvInner::tx_ro`].
#[named]
fn tx_ro(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new();
let env_inner = env.env.env_inner();

Expand All @@ -82,6 +88,7 @@ fn tx_ro(c: &mut Criterion) {
/// [`EnvInner::tx_rw`].
#[named]
fn tx_rw(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new();
let env_inner = env.env.env_inner();

Expand All @@ -96,6 +103,7 @@ fn tx_rw(c: &mut Criterion) {
/// [`EnvInner::open_db_ro`].
#[named]
fn open_db_ro(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
// `with_key_value()` creates the `Outputs`
// table so the `open_db_ro` below doesn't panic.
let env = TmpEnv::new().with_key_value();
Expand All @@ -112,6 +120,7 @@ fn open_db_ro(c: &mut Criterion) {
/// [`EnvInner::open_db_rw`].
#[named]
fn open_db_rw(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new();
let env_inner = env.env.env_inner();
let tx_rw = env_inner.tx_rw().unwrap();
Expand All @@ -126,6 +135,7 @@ fn open_db_rw(c: &mut Criterion) {
/// [`EnvInner::create_db`].
#[named]
fn create_db(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new();
let env_inner = env.env.env_inner();
let tx_rw = env_inner.tx_rw().unwrap();
Expand All @@ -140,6 +150,7 @@ fn create_db(c: &mut Criterion) {
/// [`Env::resize`].
#[named]
fn resize(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new();

// Resize env.by the OS page size.
Expand All @@ -158,6 +169,7 @@ fn resize(c: &mut Criterion) {
/// [`Env::current_map_size`].
#[named]
fn current_map_size(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new();

c.bench_function(function_name!(), |b| {
Expand All @@ -173,6 +185,7 @@ fn current_map_size(c: &mut Criterion) {
/// [`Env::disk_size_bytes`].
#[named]
fn disk_size_bytes(c: &mut Criterion) {
let mut c = c.benchmark_group(group());
let env = TmpEnv::new();

c.bench_function(function_name!(), |b| {
Expand Down
Loading

0 comments on commit d096a5f

Please sign in to comment.