Skip to content

Commit 74592fa

Browse files
authored
Merge branch 'main' into refactor_hierarchy_commands
2 parents e0c6d65 + 0f2b2de commit 74592fa

File tree

61 files changed

+875
-892
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+875
-892
lines changed

benches/benches/bevy_ecs/change_detection.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1+
use core::hint::black_box;
2+
13
use bevy_ecs::{
24
component::{Component, Mutable},
35
entity::Entity,
46
prelude::{Added, Changed, EntityWorldMut, QueryState},
57
query::QueryFilter,
68
world::World,
79
};
8-
use criterion::{black_box, criterion_group, Criterion};
10+
use criterion::{criterion_group, Criterion};
911
use rand::{prelude::SliceRandom, SeedableRng};
1012
use rand_chacha::ChaCha8Rng;
1113

benches/benches/bevy_ecs/empty_archetypes.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
use core::hint::black_box;
2+
13
use bevy_ecs::{component::Component, prelude::*, schedule::ExecutorKind, world::World};
2-
use criterion::{black_box, criterion_group, BenchmarkId, Criterion};
4+
use criterion::{criterion_group, BenchmarkId, Criterion};
35

46
criterion_group!(benches, empty_archetypes);
57

benches/benches/bevy_ecs/entity_cloning.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1+
use core::hint::black_box;
2+
13
use bevy_ecs::bundle::Bundle;
24
use bevy_ecs::reflect::AppTypeRegistry;
35
use bevy_ecs::{component::Component, reflect::ReflectComponent, world::World};
46
use bevy_hierarchy::{BuildChildren, CloneEntityHierarchyExt};
57
use bevy_math::Mat4;
68
use bevy_reflect::{GetTypeRegistration, Reflect};
7-
use criterion::{black_box, criterion_group, criterion_main, Bencher, Criterion};
9+
use criterion::{criterion_group, criterion_main, Bencher, Criterion};
810

911
criterion_group!(benches, reflect_benches, clone_benches);
1012
criterion_main!(benches);

benches/benches/bevy_ecs/observers/propagation.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
use core::hint::black_box;
2+
13
use bevy_ecs::{
24
component::Component, entity::Entity, event::Event, observer::Trigger, world::World,
35
};
46
use bevy_hierarchy::{BuildChildren, Parent};
57

6-
use criterion::{black_box, Criterion};
8+
use criterion::Criterion;
79
use rand::SeedableRng;
810
use rand::{seq::IteratorRandom, Rng};
911
use rand_chacha::ChaCha8Rng;

benches/benches/bevy_ecs/observers/simple.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
use core::hint::black_box;
2+
13
use bevy_ecs::{entity::Entity, event::Event, observer::Trigger, world::World};
24

3-
use criterion::{black_box, Criterion};
5+
use criterion::Criterion;
46
use rand::{prelude::SliceRandom, SeedableRng};
57
use rand_chacha::ChaCha8Rng;
68
fn deterministic_rand() -> ChaCha8Rng {

benches/benches/bevy_ecs/world/commands.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
use core::hint::black_box;
2+
13
use bevy_ecs::{
24
component::Component,
35
system::Commands,
46
world::{Command, CommandQueue, World},
57
};
6-
use criterion::{black_box, Criterion};
8+
use criterion::Criterion;
79

810
#[derive(Component)]
911
struct A;

benches/benches/bevy_ecs/world/world_get.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1+
use core::hint::black_box;
2+
13
use bevy_ecs::{
24
bundle::Bundle,
35
component::Component,
46
entity::Entity,
57
system::{Query, SystemState},
68
world::World,
79
};
8-
use criterion::{black_box, Criterion};
10+
use criterion::Criterion;
911
use rand::{prelude::SliceRandom, SeedableRng};
1012
use rand_chacha::ChaCha8Rng;
1113

benches/benches/bevy_math/bezier.rs

Lines changed: 62 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,94 +1,99 @@
1-
use criterion::{black_box, criterion_group, Criterion};
1+
use benches::bench;
2+
use bevy_math::{prelude::*, VectorSpace};
3+
use core::hint::black_box;
4+
use criterion::{
5+
criterion_group, measurement::Measurement, BatchSize, BenchmarkGroup, BenchmarkId, Criterion,
6+
};
27

3-
use bevy_math::prelude::*;
8+
criterion_group!(benches, segment_ease, curve_position, curve_iter_positions);
49

5-
fn easing(c: &mut Criterion) {
6-
let cubic_bezier = CubicSegment::new_bezier(vec2(0.25, 0.1), vec2(0.25, 1.0));
7-
c.bench_function("easing_1000", |b| {
8-
b.iter(|| {
9-
(0..1000).map(|i| i as f32 / 1000.0).for_each(|t| {
10-
black_box(cubic_bezier.ease(black_box(t)));
11-
});
12-
});
10+
fn segment_ease(c: &mut Criterion) {
11+
let segment = black_box(CubicSegment::new_bezier(vec2(0.25, 0.1), vec2(0.25, 1.0)));
12+
13+
c.bench_function(bench!("segment_ease"), |b| {
14+
let mut t = 0;
15+
16+
b.iter_batched(
17+
|| {
18+
// Increment `t` by 1, but use modulo to constrain it to `0..=1000`.
19+
t = (t + 1) % 1001;
20+
21+
// Return time as a decimal between 0 and 1, inclusive.
22+
t as f32 / 1000.0
23+
},
24+
|t| segment.ease(t),
25+
BatchSize::SmallInput,
26+
);
1327
});
1428
}
1529

16-
fn cubic_2d(c: &mut Criterion) {
17-
let bezier = CubicBezier::new([[
30+
fn curve_position(c: &mut Criterion) {
31+
/// A helper function that benchmarks calling [`CubicCurve::position()`] over a generic [`VectorSpace`].
32+
fn bench_curve<M: Measurement, P: VectorSpace>(
33+
group: &mut BenchmarkGroup<M>,
34+
name: &str,
35+
curve: CubicCurve<P>,
36+
) {
37+
group.bench_with_input(BenchmarkId::from_parameter(name), &curve, |b, curve| {
38+
b.iter(|| curve.position(black_box(0.5)));
39+
});
40+
}
41+
42+
let mut group = c.benchmark_group(bench!("curve_position"));
43+
44+
let bezier_2 = CubicBezier::new([[
1845
vec2(0.0, 0.0),
1946
vec2(0.0, 1.0),
2047
vec2(1.0, 0.0),
2148
vec2(1.0, 1.0),
2249
]])
2350
.to_curve()
24-
.expect("Unable to build a curve from this data");
25-
c.bench_function("cubic_position_Vec2", |b| {
26-
b.iter(|| black_box(bezier.position(black_box(0.5))));
27-
});
28-
}
51+
.unwrap();
2952

30-
fn cubic(c: &mut Criterion) {
31-
let bezier = CubicBezier::new([[
32-
vec3a(0.0, 0.0, 0.0),
33-
vec3a(0.0, 1.0, 0.0),
34-
vec3a(1.0, 0.0, 0.0),
35-
vec3a(1.0, 1.0, 1.0),
36-
]])
37-
.to_curve()
38-
.expect("Unable to build a curve from this data");
39-
c.bench_function("cubic_position_Vec3A", |b| {
40-
b.iter(|| black_box(bezier.position(black_box(0.5))));
41-
});
42-
}
53+
bench_curve(&mut group, "vec2", bezier_2);
4354

44-
fn cubic_vec3(c: &mut Criterion) {
45-
let bezier = CubicBezier::new([[
55+
let bezier_3 = CubicBezier::new([[
4656
vec3(0.0, 0.0, 0.0),
4757
vec3(0.0, 1.0, 0.0),
4858
vec3(1.0, 0.0, 0.0),
4959
vec3(1.0, 1.0, 1.0),
5060
]])
5161
.to_curve()
52-
.expect("Unable to build a curve from this data");
53-
c.bench_function("cubic_position_Vec3", |b| {
54-
b.iter(|| black_box(bezier.position(black_box(0.5))));
55-
});
56-
}
62+
.unwrap();
5763

58-
fn build_pos_cubic(c: &mut Criterion) {
59-
let bezier = CubicBezier::new([[
64+
bench_curve(&mut group, "vec3", bezier_3);
65+
66+
let bezier_3a = CubicBezier::new([[
6067
vec3a(0.0, 0.0, 0.0),
6168
vec3a(0.0, 1.0, 0.0),
6269
vec3a(1.0, 0.0, 0.0),
6370
vec3a(1.0, 1.0, 1.0),
6471
]])
6572
.to_curve()
66-
.expect("Unable to build a curve from this data");
67-
c.bench_function("build_pos_cubic_100_points", |b| {
68-
b.iter(|| black_box(bezier.iter_positions(black_box(100)).collect::<Vec<_>>()));
69-
});
73+
.unwrap();
74+
75+
bench_curve(&mut group, "vec3a", bezier_3a);
76+
77+
group.finish();
7078
}
7179

72-
fn build_accel_cubic(c: &mut Criterion) {
80+
fn curve_iter_positions(c: &mut Criterion) {
7381
let bezier = CubicBezier::new([[
7482
vec3a(0.0, 0.0, 0.0),
7583
vec3a(0.0, 1.0, 0.0),
7684
vec3a(1.0, 0.0, 0.0),
7785
vec3a(1.0, 1.0, 1.0),
7886
]])
7987
.to_curve()
80-
.expect("Unable to build a curve from this data");
81-
c.bench_function("build_accel_cubic_100_points", |b| {
82-
b.iter(|| black_box(bezier.iter_positions(black_box(100)).collect::<Vec<_>>()));
88+
.unwrap();
89+
90+
c.bench_function(bench!("curve_iter_positions"), |b| {
91+
b.iter(|| {
92+
for x in bezier.iter_positions(black_box(100)) {
93+
// Discard `x`, since we just care about `iter_positions()` being consumed, but make
94+
// the compiler believe `x` is being used so it doesn't eliminate the iterator.
95+
black_box(x);
96+
}
97+
});
8398
});
8499
}
85-
86-
criterion_group!(
87-
benches,
88-
easing,
89-
cubic_2d,
90-
cubic_vec3,
91-
cubic,
92-
build_pos_cubic,
93-
build_accel_cubic,
94-
);

benches/benches/bevy_picking/ray_mesh_intersection.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
use core::hint::black_box;
2+
13
use bevy_math::{Dir3, Mat4, Ray3d, Vec3};
24
use bevy_picking::mesh_picking::ray_cast;
3-
use criterion::{black_box, criterion_group, Criterion};
5+
use criterion::{criterion_group, Criterion};
46

57
fn ptoxznorm(p: u32, size: u32) -> (f32, f32) {
68
let ij = (p / (size), p % (size));

benches/benches/bevy_reflect/list.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
use core::{iter, time::Duration};
1+
use core::{hint::black_box, iter, time::Duration};
22

33
use benches::bench;
44
use bevy_reflect::{DynamicList, List};
55
use criterion::{
6-
black_box, criterion_group, measurement::Measurement, AxisScale, BatchSize, BenchmarkGroup,
7-
BenchmarkId, Criterion, PlotConfiguration, Throughput,
6+
criterion_group, measurement::Measurement, AxisScale, BatchSize, BenchmarkGroup, BenchmarkId,
7+
Criterion, PlotConfiguration, Throughput,
88
};
99

1010
criterion_group!(

0 commit comments

Comments
 (0)