Skip to content

Commit 5d26f56

Browse files
committed
refactor: organize benches to be consistent
1 parent 1e7b89c commit 5d26f56

File tree

21 files changed

+88
-85
lines changed

21 files changed

+88
-85
lines changed

benches/Cargo.toml

Lines changed: 13 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ edition = "2021"
44
description = "Benchmarks that test Bevy's performance"
55
publish = false
66
license = "MIT OR Apache-2.0"
7+
# Do not automatically discover benchmarks, we specify them manually instead.
8+
autobenches = false
79

810
[dev-dependencies]
911
glam = "0.29"
@@ -30,62 +32,32 @@ bevy_winit = { path = "../crates/bevy_winit", features = ["x11"] }
3032
opt-level = 3
3133
lto = true
3234

33-
[[bench]]
34-
name = "change_detection"
35-
path = "benches/bevy_ecs/change_detection.rs"
36-
harness = false
37-
3835
[[bench]]
3936
name = "ecs"
40-
path = "benches/bevy_ecs/benches.rs"
41-
harness = false
42-
43-
[[bench]]
44-
name = "ray_mesh_intersection"
45-
path = "benches/bevy_picking/ray_mesh_intersection.rs"
46-
harness = false
47-
48-
[[bench]]
49-
name = "reflect_function"
50-
path = "benches/bevy_reflect/function.rs"
51-
harness = false
52-
53-
[[bench]]
54-
name = "reflect_list"
55-
path = "benches/bevy_reflect/list.rs"
56-
harness = false
57-
58-
[[bench]]
59-
name = "reflect_map"
60-
path = "benches/bevy_reflect/map.rs"
61-
harness = false
62-
63-
[[bench]]
64-
name = "reflect_struct"
65-
path = "benches/bevy_reflect/struct.rs"
37+
path = "benches/bevy_ecs/main.rs"
6638
harness = false
6739

6840
[[bench]]
69-
name = "parse_reflect_path"
70-
path = "benches/bevy_reflect/path.rs"
41+
name = "math"
42+
path = "benches/bevy_math/main.rs"
7143
harness = false
7244

7345
[[bench]]
74-
name = "iter"
75-
path = "benches/bevy_tasks/iter.rs"
46+
name = "picking"
47+
path = "benches/bevy_picking/main.rs"
7648
harness = false
7749

7850
[[bench]]
79-
name = "bezier"
80-
path = "benches/bevy_math/bezier.rs"
51+
name = "reflect"
52+
path = "benches/bevy_reflect/main.rs"
8153
harness = false
8254

8355
[[bench]]
84-
name = "torus"
85-
path = "benches/bevy_render/torus.rs"
56+
name = "render"
57+
path = "benches/bevy_render/main.rs"
8658
harness = false
8759

8860
[[bench]]
89-
name = "entity_hash"
90-
path = "benches/bevy_ecs/world/entity_hash.rs"
61+
name = "tasks"
62+
path = "benches/bevy_tasks/main.rs"
9163
harness = false

benches/benches/bevy_ecs/change_detection.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,18 @@ use bevy_ecs::{
55
query::QueryFilter,
66
world::World,
77
};
8-
use criterion::{black_box, criterion_group, criterion_main, Criterion};
8+
use criterion::{black_box, criterion_group, Criterion};
99
use rand::{prelude::SliceRandom, SeedableRng};
1010
use rand_chacha::ChaCha8Rng;
1111

1212
criterion_group!(
13-
benches,
13+
change_detection_benches,
1414
all_added_detection,
1515
all_changed_detection,
1616
few_changed_detection,
1717
none_changed_detection,
1818
multiple_archetype_none_changed_detection
1919
);
20-
criterion_main!(benches);
2120

2221
macro_rules! modify {
2322
($components:ident;$($index:tt),*) => {

benches/benches/bevy_ecs/empty_archetypes.rs

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
use bevy_ecs::{component::Component, prelude::*, world::World};
2-
use bevy_tasks::{ComputeTaskPool, TaskPool};
3-
use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion};
2+
use criterion::{black_box, criterion_group, BenchmarkId, Criterion};
43

5-
criterion_group!(benches, empty_archetypes);
6-
criterion_main!(benches);
4+
criterion_group!(empty_archetypes_benches, empty_archetypes);
75

86
#[derive(Component)]
97
struct A<const N: u16>(f32);
@@ -47,13 +45,12 @@ fn for_each(
4745
&A<12>,
4846
)>,
4947
) {
50-
query.for_each(|comp| {
48+
query.iter().for_each(|comp| {
5149
black_box(comp);
5250
});
5351
}
5452

5553
fn par_for_each(
56-
task_pool: Res<ComputeTaskPool>,
5754
query: Query<(
5855
&A<0>,
5956
&A<1>,
@@ -70,25 +67,26 @@ fn par_for_each(
7067
&A<12>,
7168
)>,
7269
) {
73-
query.par_for_each(&*task_pool, 64, |comp| {
70+
query.par_iter().for_each(|comp| {
7471
black_box(comp);
7572
});
7673
}
7774

75+
#[expect(
76+
unused_variables,
77+
reason = "`parallel` has no effect, it needs to be removed or parallel support needs to be re-added."
78+
)]
7879
fn setup(parallel: bool, setup: impl FnOnce(&mut Schedule)) -> (World, Schedule) {
79-
let mut world = World::new();
80+
let world = World::new();
8081
let mut schedule = Schedule::default();
81-
if parallel {
82-
world.insert_resource(ComputeTaskPool(TaskPool::default()));
83-
}
8482
setup(&mut schedule);
8583
(world, schedule)
8684
}
8785

8886
/// create `count` entities with distinct archetypes
8987
fn add_archetypes(world: &mut World, count: u16) {
9088
for i in 0..count {
91-
let mut e = world.spawn();
89+
let mut e = world.spawn_empty();
9290
e.insert(A::<0>(1.0));
9391
e.insert(A::<1>(1.0));
9492
e.insert(A::<2>(1.0));
@@ -158,7 +156,7 @@ fn empty_archetypes(criterion: &mut Criterion) {
158156
});
159157
add_archetypes(&mut world, archetype_count);
160158
world.clear_entities();
161-
let mut e = world.spawn();
159+
let mut e = world.spawn_empty();
162160
e.insert(A::<0>(1.0));
163161
e.insert(A::<1>(1.0));
164162
e.insert(A::<2>(1.0));
@@ -189,7 +187,7 @@ fn empty_archetypes(criterion: &mut Criterion) {
189187
});
190188
add_archetypes(&mut world, archetype_count);
191189
world.clear_entities();
192-
let mut e = world.spawn();
190+
let mut e = world.spawn_empty();
193191
e.insert(A::<0>(1.0));
194192
e.insert(A::<1>(1.0));
195193
e.insert(A::<2>(1.0));
@@ -220,7 +218,7 @@ fn empty_archetypes(criterion: &mut Criterion) {
220218
});
221219
add_archetypes(&mut world, archetype_count);
222220
world.clear_entities();
223-
let mut e = world.spawn();
221+
let mut e = world.spawn_empty();
224222
e.insert(A::<0>(1.0));
225223
e.insert(A::<1>(1.0));
226224
e.insert(A::<2>(1.0));

benches/benches/bevy_ecs/benches.rs renamed to benches/benches/bevy_ecs/main.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
use criterion::criterion_main;
44

5+
mod change_detection;
56
mod components;
7+
mod empty_archetypes;
68
mod events;
79
mod fragmentation;
810
mod iteration;
@@ -12,7 +14,9 @@ mod scheduling;
1214
mod world;
1315

1416
criterion_main!(
17+
change_detection::change_detection_benches,
1518
components::components_benches,
19+
empty_archetypes::empty_archetypes_benches,
1620
events::event_benches,
1721
iteration::iterations_benches,
1822
fragmentation::fragmentation_benches,

benches/benches/bevy_ecs/world/entity_hash.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
use bevy_ecs::entity::{Entity, EntityHashSet};
2-
use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion, Throughput};
2+
use criterion::{BenchmarkId, Criterion, Throughput};
33
use rand::{Rng, SeedableRng};
44
use rand_chacha::ChaCha8Rng;
55

6-
criterion_group!(benches, entity_set_build_and_lookup,);
7-
criterion_main!(benches);
8-
96
const SIZES: [usize; 5] = [100, 316, 1000, 3162, 10000];
107

118
fn make_entity(rng: &mut impl Rng, size: usize) -> Entity {

benches/benches/bevy_ecs/world/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,5 @@ criterion_group!(
3939
query_get_many::<2>,
4040
query_get_many::<5>,
4141
query_get_many::<10>,
42-
entity_set_build_and_lookup
42+
entity_set_build_and_lookup,
4343
);

benches/benches/bevy_math/bezier.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use criterion::{black_box, criterion_group, criterion_main, Criterion};
1+
use criterion::{black_box, criterion_group, Criterion};
22

33
use bevy_math::prelude::*;
44

@@ -92,4 +92,3 @@ criterion_group!(
9292
build_pos_cubic,
9393
build_accel_cubic,
9494
);
95-
criterion_main!(benches);

benches/benches/bevy_math/main.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
use criterion::criterion_main;
2+
3+
mod bezier;
4+
5+
criterion_main!(
6+
bezier::benches,
7+
);

benches/benches/bevy_picking/main.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
use criterion::criterion_main;
2+
3+
mod ray_mesh_intersection;
4+
5+
criterion_main!(
6+
ray_mesh_intersection::benches,
7+
);

benches/benches/bevy_picking/ray_mesh_intersection.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use bevy_math::{Dir3, Mat4, Ray3d, Vec3};
22
use bevy_picking::mesh_picking::ray_cast;
3-
use criterion::{black_box, criterion_group, criterion_main, Criterion};
3+
use criterion::{black_box, criterion_group, Criterion};
44

55
fn ptoxznorm(p: u32, size: u32) -> (f32, f32) {
66
let ij = (p / (size), p % (size));
@@ -117,4 +117,3 @@ criterion_group!(
117117
ray_mesh_intersection_no_cull,
118118
ray_mesh_intersection_no_intersection
119119
);
120-
criterion_main!(benches);

0 commit comments

Comments
 (0)