add growing benchmark
This commit is contained in:
parent
3506e0057f
commit
83ecee6509
5 changed files with 49 additions and 18 deletions
|
@ -9,7 +9,7 @@ edition = "2021"
|
||||||
rand = "0.8.5"
|
rand = "0.8.5"
|
||||||
|
|
||||||
[[bench]]
|
[[bench]]
|
||||||
name = "large_grid"
|
name = "main"
|
||||||
harness = false
|
harness = false
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
use criterion::{black_box, criterion_group, criterion_main, Criterion};
|
|
||||||
use gol_bitwise::region::Region;
|
|
||||||
|
|
||||||
fn large_grid(c: &mut Criterion) {
|
|
||||||
const SIZE: usize = 2048 / gol_bitwise::tile::WIDTH; // same number of cells regardless of tile size
|
|
||||||
let mut region = black_box(Region::new(SIZE, SIZE));
|
|
||||||
region.randomise();
|
|
||||||
|
|
||||||
c.bench_function("large grid", |b| {
|
|
||||||
b.iter(|| {
|
|
||||||
region.step();
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
criterion_group!(benches, large_grid);
|
|
||||||
criterion_main!(benches);
|
|
33
benches/main.rs
Normal file
33
benches/main.rs
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
use criterion::{black_box, criterion_group, criterion_main, Criterion};
|
||||||
|
use gol_bitwise::{
|
||||||
|
region::Region,
|
||||||
|
tile::{self, Tile},
|
||||||
|
};
|
||||||
|
|
||||||
|
fn large_grid(c: &mut Criterion) {
|
||||||
|
const SIZE: usize = 2048 / tile::WIDTH; // same number of cells regardless of tile size
|
||||||
|
let mut region = black_box(Region::new(SIZE, SIZE));
|
||||||
|
region.randomise();
|
||||||
|
|
||||||
|
c.bench_function("large grid", |b| {
|
||||||
|
b.iter(|| {
|
||||||
|
region.step();
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
fn growing(c: &mut Criterion) {
|
||||||
|
c.bench_function("growing", |b| {
|
||||||
|
b.iter(|| {
|
||||||
|
let mut region = black_box(Region::new(1, 1));
|
||||||
|
region.set_tile(Tile::gliders(), 0, 0);
|
||||||
|
for _ in 0..1024 {
|
||||||
|
region.step();
|
||||||
|
region.auto_grow();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
criterion_group!(benches, large_grid, growing);
|
||||||
|
criterion_main!(benches);
|
|
@ -19,6 +19,10 @@ impl Region {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn set_tile(&mut self, tile: Tile, x: usize, y: usize) {
|
||||||
|
self.tiles[y][x] = tile;
|
||||||
|
}
|
||||||
|
|
||||||
pub fn height(&self) -> usize {
|
pub fn height(&self) -> usize {
|
||||||
self.tiles.len()
|
self.tiles.len()
|
||||||
}
|
}
|
||||||
|
|
11
src/tile.rs
11
src/tile.rs
|
@ -27,6 +27,17 @@ impl Tile {
|
||||||
Self::EMPTY
|
Self::EMPTY
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn gliders() -> Self {
|
||||||
|
let mut t = Self::EMPTY;
|
||||||
|
t.rows[1] = 0b1110000;
|
||||||
|
t.rows[2] = 0b1000000;
|
||||||
|
t.rows[3] = 0b0100000;
|
||||||
|
t.rows[WIDTH - 4] = 0b0100;
|
||||||
|
t.rows[WIDTH - 3] = 0b0010;
|
||||||
|
t.rows[WIDTH - 2] = 0b1110;
|
||||||
|
t
|
||||||
|
}
|
||||||
|
|
||||||
pub fn edge_east(&self) -> Row {
|
pub fn edge_east(&self) -> Row {
|
||||||
let mut edge = 0;
|
let mut edge = 0;
|
||||||
for n in 0..WIDTH {
|
for n in 0..WIDTH {
|
||||||
|
|
Loading…
Reference in a new issue