35 lines
1.0 KiB
Rust
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); |