bincode/
bincode.rs

1use clap::Parser;
2use eyre::Result;
3use openvm_benchmarks_prove::util::BenchmarkCli;
4use openvm_circuit::arch::instructions::exe::VmExe;
5use openvm_rv32im_circuit::Rv32ImConfig;
6use openvm_rv32im_transpiler::{
7    Rv32ITranspilerExtension, Rv32IoTranspilerExtension, Rv32MTranspilerExtension,
8};
9use openvm_sdk::StdIn;
10use openvm_stark_sdk::{bench::run_with_metric_collection, p3_baby_bear::BabyBear};
11use openvm_transpiler::{transpiler::Transpiler, FromElf};
12
13fn main() -> Result<()> {
14    let args = BenchmarkCli::parse();
15
16    let elf = args.build_bench_program("bincode")?;
17    let exe = VmExe::from_elf(
18        elf,
19        Transpiler::<BabyBear>::default()
20            .with_extension(Rv32ITranspilerExtension)
21            .with_extension(Rv32MTranspilerExtension)
22            .with_extension(Rv32IoTranspilerExtension),
23    )?;
24    run_with_metric_collection("OUTPUT_PATH", || -> Result<()> {
25        let file_data = include_bytes!("../../../guest/bincode/minecraft_savedata.bin");
26        let stdin = StdIn::from_bytes(file_data);
27        args.bench_from_exe("bincode", Rv32ImConfig::default(), exe, stdin)
28    })
29}