revme/cmd/
bench.rs

1pub mod analysis;
2pub mod burntpix;
3pub mod snailtracer;
4pub mod transfer;
5
6use clap::{Parser, ValueEnum};
7
8#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, ValueEnum)]
9pub enum BenchName {
10    Analysis,
11    Burntpix,
12    Snailtracer,
13    Transfer,
14}
15
16impl BenchName {
17    pub const ALL: &[BenchName] = &[
18        BenchName::Analysis,
19        BenchName::Burntpix,
20        BenchName::Snailtracer,
21        BenchName::Transfer,
22    ];
23
24    pub fn as_str(self) -> &'static str {
25        match self {
26            BenchName::Analysis => "analysis",
27            BenchName::Burntpix => "burntpix",
28            BenchName::Snailtracer => "snailtracer",
29            BenchName::Transfer => "transfer",
30        }
31    }
32}
33
34/// `bytecode` subcommand
35#[derive(Parser, Debug)]
36pub struct Cmd {
37    #[arg(value_enum)]
38    pub name: BenchName,
39}
40
41impl Cmd {
42    /// Runs bench command.
43    pub fn run(&self) {
44        match self.name {
45            BenchName::Analysis => analysis::run(),
46            BenchName::Burntpix => burntpix::run(),
47            BenchName::Snailtracer => snailtracer::run(),
48            BenchName::Transfer => transfer::run(),
49        }
50    }
51}