quantum_queries/benches/vm.rs

35 lines
1.0 KiB
Rust

#[macro_use]
extern crate criterion;
extern crate adversary;
use criterion::{criterion_group, criterion_main, Criterion};
fn bench_vm(c: &mut Criterion) {
let expression =
adversary::vm::parsing::parse_relation("and (= (ham (^ x y)) (ham (+ 3 x))) (> (* x y) 5)");
if let Err(e) = expression {
println!("{}", e);
panic!();
}
let code = adversary::vm::compile_boolean(expression.unwrap());
let mut stack = adversary::vm::VmStack::from_code(&code);
c.bench_function("vm", |b| {
b.iter(|| {
for x in 0..(1 << 6) {
for y in 0..(1 << 6) {
criterion::black_box(
adversary::vm::Vm::load(
&code,
adversary::vm::Registers::load(x, y, 6, 0, 0),
&mut stack,
)
.run(),
);
}
}
})
});
}
criterion_group!(vm, bench_vm);
criterion_main!(vm);