Skip to content

Commit

Permalink
WIP - Add benchmark for create_transactions
Browse files Browse the repository at this point in the history
  • Loading branch information
dlachaume committed Apr 29, 2024
1 parent 9b71815 commit 5de620a
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 0 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.

5 changes: 5 additions & 0 deletions mithril-signer/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ homepage = { workspace = true }
license = { workspace = true }
repository = { workspace = true }

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

[dependencies]
anyhow = "1.0.79"
async-trait = "0.1.77"
Expand Down Expand Up @@ -42,6 +46,7 @@ tokio = { version = "1.35.1", features = ["full"] }
tikv-jemallocator = { version = "0.5.4", optional = true }

[dev-dependencies]
criterion = { version = "0.5.1", features = ["html_reports", "async_tokio"] }
httpmock = "0.7.0"
mithril-common = { path = "../mithril-common" }
mockall = "0.12.1"
Expand Down
57 changes: 57 additions & 0 deletions mithril-signer/benches/cardano_transactions.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
use std::sync::Arc;

use criterion::{criterion_group, criterion_main, Criterion};
use mithril_common::{entities::CardanoTransaction, StdResult};
use mithril_persistence::sqlite::{ConnectionBuilder, ConnectionOptions};
use mithril_signer::database::repository::CardanoTransactionRepository;
use sqlite::ConnectionThreadSafe;

fn cardano_tx_db_connection() -> StdResult<ConnectionThreadSafe> {
let connection = ConnectionBuilder::open_memory()
.with_options(&[ConnectionOptions::ForceDisableForeignKeys])
.with_migrations(mithril_signer::database::cardano_transaction_migration::get_migrations())
.build()?;
Ok(connection)
}

fn generate_transactions(nb_transactions: usize) -> Vec<CardanoTransaction> {
(0..nb_transactions)
.map(|i| {
CardanoTransaction::new(
format!("tx_hash-{}", i),
i as u64,
i as u64 + 1,
format!("block_hash-{}", i),
i as u64 + 2,
)
})
.collect()
}

fn bench_create_cardano_transactions(c: &mut Criterion) {
const NB_CARDANO_TRANSACTIONS: usize = 100;
let runtime = tokio::runtime::Runtime::new().unwrap();

let connection = Arc::new(cardano_tx_db_connection().unwrap());
let repository = CardanoTransactionRepository::new(connection);

let mut group = c.benchmark_group("Create transactions");
group.bench_function("create_transactions 2", |bencher| {
bencher.to_async(&runtime).iter(|| async {
repository
.create_transactions(generate_transactions(NB_CARDANO_TRANSACTIONS))
.await
});
});
group.bench_function("create_transactions 2 bis", |bencher| {
bencher.to_async(&runtime).iter(|| async {
repository
.create_transactions(generate_transactions(NB_CARDANO_TRANSACTIONS))
.await
});
});
group.finish();
}

criterion_group!(benches, bench_create_cardano_transactions);
criterion_main!(benches);

0 comments on commit 5de620a

Please sign in to comment.