Skip to content

Commit c506643

Browse files
authored
bench: support filter for gigagas bench (#23)
run specifc test in gigagas bench, e.g.: ``` FILTER="raw_transfers,erc20,uniswap" cargo bench --bench gigagas -- --sample-size 10 ``` run all test if FILTER is not set
1 parent c560919 commit c506643

File tree

1 file changed

+27
-25
lines changed

1 file changed

+27
-25
lines changed

benches/gigagas.rs

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@ use metrics_util::{
2323
};
2424
use rand::Rng;
2525
use revm::primitives::{alloy_primitives::U160, Address, Env, SpecId, TransactTo, TxEnv, U256};
26-
use std::{collections::HashMap, sync::Arc};
26+
use std::{
27+
collections::{HashMap, HashSet},
28+
sync::Arc,
29+
};
2730

2831
const GIGA_GAS: u64 = 1_000_000_000;
2932

@@ -50,17 +53,6 @@ fn bench(c: &mut Criterion, name: &str, db: InMemoryDB, txs: Vec<TxEnv>) {
5053
let txs = Arc::new(txs);
5154

5255
let mut group = c.benchmark_group(format!("{}({} txs)", name, txs.len()));
53-
group.bench_function("Origin Sequential", |b| {
54-
b.iter(|| {
55-
common::execute_revm_sequential(
56-
black_box(db.clone()),
57-
black_box(SpecId::LATEST),
58-
black_box(env.clone()),
59-
black_box(&*txs),
60-
)
61-
})
62-
});
63-
6456
let mut num_iter: usize = 0;
6557
let mut execution_time_ns: u64 = 0;
6658
group.bench_function("Grevm Parallel", |b| {
@@ -208,17 +200,32 @@ fn benchmark_gigagas(c: &mut Criterion) {
208200
let db_latency_us = std::env::var("DB_LATENCY_US").map(|s| s.parse().unwrap()).unwrap_or(0);
209201
let num_eoa = std::env::var("NUM_EOA").map(|s| s.parse().unwrap()).unwrap_or(0);
210202
let hot_ratio = std::env::var("HOT_RATIO").map(|s| s.parse().unwrap()).unwrap_or(0.0);
211-
bench_raw_transfers(c, db_latency_us);
212-
bench_dependent_raw_transfers(c, db_latency_us, num_eoa, hot_ratio);
213-
benchmark_erc20(c, db_latency_us);
214-
benchmark_dependent_erc20(c, db_latency_us, num_eoa, hot_ratio);
215-
bench_uniswap(c, db_latency_us);
216-
bench_hybrid(c, db_latency_us, num_eoa, hot_ratio);
203+
let filter: String = std::env::var("FILTER").unwrap_or_default();
204+
let filter: HashSet<&str> = filter.split(',').filter(|s| !s.is_empty()).collect();
205+
206+
if filter.is_empty() || filter.contains("raw_transfers") {
207+
bench_raw_transfers(c, db_latency_us);
208+
}
209+
if filter.is_empty() || filter.contains("dependent_raw_transfers") {
210+
bench_dependent_raw_transfers(c, db_latency_us, num_eoa, hot_ratio);
211+
}
212+
if filter.is_empty() || filter.contains("erc20") {
213+
bench_erc20(c, db_latency_us);
214+
}
215+
if filter.is_empty() || filter.contains("dependent_erc20") {
216+
bench_dependent_erc20(c, db_latency_us, num_eoa, hot_ratio);
217+
}
218+
if filter.is_empty() || filter.contains("uniswap") {
219+
bench_uniswap(c, db_latency_us);
220+
}
221+
if filter.is_empty() || filter.contains("hybrid") {
222+
bench_hybrid(c, db_latency_us, num_eoa, hot_ratio);
223+
}
217224

218225
fastrace::flush();
219226
}
220227

221-
fn benchmark_erc20(c: &mut Criterion, db_latency_us: u64) {
228+
fn bench_erc20(c: &mut Criterion, db_latency_us: u64) {
222229
let block_size = (GIGA_GAS as f64 / erc20::ESTIMATED_GAS_USED as f64).ceil() as usize;
223230
let (mut state, bytecodes, eoa, sca) = erc20::generate_cluster(block_size, 1);
224231
let miner = common::mock_miner_account();
@@ -243,12 +250,7 @@ fn benchmark_erc20(c: &mut Criterion, db_latency_us: u64) {
243250
bench(c, "Independent ERC20", db, txs);
244251
}
245252

246-
fn benchmark_dependent_erc20(
247-
c: &mut Criterion,
248-
db_latency_us: u64,
249-
num_eoa: usize,
250-
hot_ratio: f64,
251-
) {
253+
fn bench_dependent_erc20(c: &mut Criterion, db_latency_us: u64, num_eoa: usize, hot_ratio: f64) {
252254
let block_size = (GIGA_GAS as f64 / erc20::ESTIMATED_GAS_USED as f64).ceil() as usize;
253255
let (mut state, bytecodes, eoa, sca) = erc20::generate_cluster(num_eoa, 1);
254256
let miner = common::mock_miner_account();

0 commit comments

Comments
 (0)