You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.4 KiB

use criterion::{black_box, criterion_group, criterion_main, Criterion};
use stackline::prelude::*;
use stackline::tile::*;
fn benchmark_step(c: &mut Criterion) {
c.bench_function("Pane::step", |b| {
let mut pane = Pane::empty(4, 4).unwrap();
pane.set_tile((0, 0), Diode::new(Direction::Right));
pane.set_tile((3, 0), Diode::new(Direction::Down));
pane.set_tile((3, 3), Diode::new(Direction::Left));
pane.set_tile((0, 3), Diode::new(Direction::Up));
for n in 1..3 {
pane.set_tile((n, 0), Wire::new(Orientation::Horizontal));
pane.set_tile((n, 3), Wire::new(Orientation::Horizontal));
pane.set_tile((0, n), Wire::new(Orientation::Vertical));
pane.set_tile((3, n), Wire::new(Orientation::Vertical));
}
pane.set_signal((0, 0), stackline::signal!(
(0, 0),
Direction::Right,
[]
));
pane.set_signal((3, 0), stackline::signal!(
(3, 0),
Direction::Down,
[]
));
pane.set_signal((3, 3), stackline::signal!(
(3, 3),
Direction::Left,
[]
));
pane.set_signal((0, 3), stackline::signal!(
(0, 3),
Direction::Up,
[]
));
b.iter(|| pane.step());
});
}
criterion_group!(benches, benchmark_step);
criterion_main!(benches);