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#[derive(Parser, Debug)]
36pub struct Cmd {
37 #[arg(value_enum)]
38 pub name: BenchName,
39}
40
41impl Cmd {
42 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}