@@ -23,7 +23,10 @@ use metrics_util::{
2323} ; 
2424use  rand:: Rng ; 
2525use  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
2831const  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