revme/cmd/bench/
snailtracer.rs1use context::TxEnv;
2use criterion::Criterion;
3use database::{BenchmarkDB, BENCH_CALLER, BENCH_TARGET};
4use revm::{
5 bytecode::Bytecode,
6 primitives::{bytes, hex, Bytes, TxKind},
7 Context, ExecuteEvm, MainBuilder, MainContext,
8};
9
10pub fn run(criterion: &mut Criterion) {
11 let bytecode = Bytecode::new_raw(Bytes::from(hex::decode(BYTES).unwrap()));
12
13 let mut evm = Context::mainnet()
14 .with_db(BenchmarkDB::new_bytecode(bytecode.clone()))
15 .modify_cfg_chained(|c| c.disable_nonce_check = true)
16 .build_mainnet();
17
18 let tx = TxEnv {
19 caller: BENCH_CALLER,
20 kind: TxKind::Call(BENCH_TARGET),
21 data: bytes!("30627b7c"),
22 gas_limit: 1_000_000_000,
23 ..Default::default()
24 };
25
26 criterion.bench_function("snailtracer", |b| {
27 b.iter(|| {
28 let _ = evm.transact(tx.clone()).unwrap();
29 })
30 });
31}
32
33const BYTES: &str = include_str!("snailtracer.hex");