16051
|
1 |
use criterion::{black_box, criterion_group, criterion_main, Criterion};
|
|
2 |
use integral_geometry::{Point, Rect, Size};
|
|
3 |
use landgen;
|
|
4 |
use landgen::{LandGenerationParameters, LandGenerator};
|
|
5 |
use landgen::outline_template_based::outline_template::OutlineTemplate;
|
|
6 |
use landgen::outline_template_based::template_based::TemplatedLandGenerator;
|
|
7 |
|
|
8 |
pub fn generate_outline(c: &mut Criterion) {
|
|
9 |
let template = OutlineTemplate {
|
|
10 |
islands: vec![
|
|
11 |
vec![
|
|
12 |
Rect::from_box(273, 273, 2048, 2048),
|
|
13 |
Rect::from_box(683, 683, 32, 63),
|
|
14 |
Rect::from_box(1092, 1092, 2048, 2048),
|
|
15 |
],
|
|
16 |
vec![
|
|
17 |
Rect::from_box(1638, 1638, 2048, 2048),
|
|
18 |
Rect::from_box(2048, 2048, 32, 63),
|
|
19 |
Rect::from_box(2458, 2458, 2048, 2048),
|
|
20 |
],
|
|
21 |
vec![
|
|
22 |
Rect::from_box(3004, 3004, 2048, 2048),
|
|
23 |
Rect::from_box(3413, 3413, 32, 63),
|
|
24 |
Rect::from_box(3823, 3823, 2048, 2048),
|
|
25 |
],
|
|
26 |
],
|
|
27 |
walls: vec![],
|
|
28 |
fill_points: vec![Point::new(1, 0)],
|
|
29 |
size: Size {
|
|
30 |
width: 4096,
|
|
31 |
height: 2048,
|
|
32 |
},
|
|
33 |
can_flip: false,
|
|
34 |
can_invert: false,
|
|
35 |
can_mirror: false,
|
|
36 |
is_negative: false,
|
|
37 |
};
|
|
38 |
|
|
39 |
let parameters = LandGenerationParameters::new(
|
|
40 |
0u16,
|
|
41 |
32768u16,
|
|
42 |
10,
|
|
43 |
false,
|
|
44 |
false
|
|
45 |
);
|
|
46 |
|
|
47 |
c.bench_function("outline_generation", |b| b.iter(|| {
|
|
48 |
fn prng() -> impl Iterator<Item = u32> {
|
|
49 |
(0..).map(|i| (i as u64 * 31_234_773 % 2_017_234_567) as u32)
|
|
50 |
}
|
|
51 |
|
|
52 |
let gen = TemplatedLandGenerator::new(black_box(template.clone()));
|
|
53 |
gen.generate_land(black_box(¶meters), &mut prng())
|
|
54 |
}));
|
|
55 |
}
|
|
56 |
|
|
57 |
criterion_group!(benches, generate_outline);
|
|
58 |
criterion_main!(benches);
|