Skip to content

Commit f2fb626

Browse files
committed
Switch benchmarks to single_threaded executor
1 parent b416d18 commit f2fb626

File tree

6 files changed

+23
-12
lines changed

6 files changed

+23
-12
lines changed

benches/benches/bevy_ecs/components/archetype_updates.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ struct A<const N: u16>(f32);
1212
fn setup(system_count: usize) -> (World, Schedule) {
1313
let mut world = World::new();
1414
fn empty() {}
15-
let mut schedule = Schedule::default();
16-
schedule.set_executor_kind(ExecutorKind::SingleThreaded);
15+
let mut schedule = Schedule::single_threaded();
1716
for _ in 0..system_count {
1817
schedule.add_systems(empty);
1918
}

benches/benches/bevy_ecs/empty_archetypes.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ fn par_for_each(
7777

7878
fn setup(parallel: bool, setup: impl FnOnce(&mut Schedule)) -> (World, Schedule) {
7979
let mut world = World::new();
80-
let mut schedule = Schedule::default();
80+
let mut schedule = Schedule::single_threaded();
8181
if parallel {
8282
world.insert_resource(ComputeTaskPool(TaskPool::default()));
8383
}

benches/benches/bevy_ecs/scheduling/run_condition.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ pub fn run_condition_yes(criterion: &mut Criterion) {
1818
group.measurement_time(std::time::Duration::from_secs(3));
1919
fn empty() {}
2020
for amount in 0..21 {
21-
let mut schedule = Schedule::default();
21+
let mut schedule = Schedule::single_threaded();
2222
schedule.add_systems(empty.run_if(yes));
2323
for _ in 0..amount {
2424
schedule.add_systems((empty, empty, empty, empty, empty).distributive_run_if(yes));
@@ -41,7 +41,7 @@ pub fn run_condition_no(criterion: &mut Criterion) {
4141
group.measurement_time(std::time::Duration::from_secs(3));
4242
fn empty() {}
4343
for amount in 0..21 {
44-
let mut schedule = Schedule::default();
44+
let mut schedule = Schedule::single_threaded();
4545
schedule.add_systems(empty.run_if(no));
4646
for _ in 0..amount {
4747
schedule.add_systems((empty, empty, empty, empty, empty).distributive_run_if(no));
@@ -71,7 +71,7 @@ pub fn run_condition_yes_with_query(criterion: &mut Criterion) {
7171
query.single().0
7272
}
7373
for amount in 0..21 {
74-
let mut schedule = Schedule::default();
74+
let mut schedule = Schedule::single_threaded();
7575
schedule.add_systems(empty.run_if(yes_with_query));
7676
for _ in 0..amount {
7777
schedule.add_systems(
@@ -100,7 +100,7 @@ pub fn run_condition_yes_with_resource(criterion: &mut Criterion) {
100100
res.0
101101
}
102102
for amount in 0..21 {
103-
let mut schedule = Schedule::default();
103+
let mut schedule = Schedule::single_threaded();
104104
schedule.add_systems(empty.run_if(yes_with_resource));
105105
for _ in 0..amount {
106106
schedule.add_systems(

benches/benches/bevy_ecs/scheduling/running_systems.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ pub fn empty_systems(criterion: &mut Criterion) {
2121
group.measurement_time(std::time::Duration::from_secs(3));
2222
fn empty() {}
2323
for amount in 0..5 {
24-
let mut schedule = Schedule::default();
24+
let mut schedule = Schedule::single_threaded();
2525
for _ in 0..amount {
2626
schedule.add_systems(empty);
2727
}
@@ -33,7 +33,7 @@ pub fn empty_systems(criterion: &mut Criterion) {
3333
});
3434
}
3535
for amount in 1..21 {
36-
let mut schedule = Schedule::default();
36+
let mut schedule = Schedule::single_threaded();
3737
for _ in 0..amount {
3838
schedule.add_systems((empty, empty, empty, empty, empty));
3939
}
@@ -73,7 +73,7 @@ pub fn busy_systems(criterion: &mut Criterion) {
7373
world.spawn_batch((0..ENTITY_BUNCH).map(|_| (A(0.0), B(0.0), C(0.0), D(0.0))));
7474
world.spawn_batch((0..ENTITY_BUNCH).map(|_| (A(0.0), B(0.0), C(0.0), E(0.0))));
7575
for system_amount in 0..5 {
76-
let mut schedule = Schedule::default();
76+
let mut schedule = Schedule::single_threaded();
7777
schedule.add_systems((ab, cd, ce));
7878
for _ in 0..system_amount {
7979
schedule.add_systems((ab, cd, ce));
@@ -124,7 +124,7 @@ pub fn contrived(criterion: &mut Criterion) {
124124
world.spawn_batch((0..ENTITY_BUNCH).map(|_| (A(0.0), B(0.0))));
125125
world.spawn_batch((0..ENTITY_BUNCH).map(|_| (C(0.0), D(0.0))));
126126
for system_amount in 0..5 {
127-
let mut schedule = Schedule::default();
127+
let mut schedule = Schedule::single_threaded();
128128
schedule.add_systems((s_0, s_1, s_2));
129129
for _ in 0..system_amount {
130130
schedule.add_systems((s_0, s_1, s_2));

benches/benches/bevy_ecs/scheduling/schedule.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ pub fn schedule(c: &mut Criterion) {
4646

4747
world.spawn_batch((0..10000).map(|_| (A(0.0), B(0.0), C(0.0), E(0.0))));
4848

49-
let mut schedule = Schedule::default();
49+
let mut schedule = Schedule::single_threaded();
5050
schedule.add_systems((ab, cd, ce));
5151
schedule.run(&mut world);
5252

crates/bevy_ecs/src/schedule/schedule.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,18 @@ impl Schedule {
190190
}
191191
}
192192

193+
/// Constructs an empty `Schedule` with the [`SingleThreaded`] executor.
194+
/// Only use in situations where you don't care about the [`ScheduleLabel`].
195+
/// Inserting a default schedule into the world risks overwriting another
196+
/// schedule. For most situations you should use [`Schedule::new`].
197+
///
198+
/// [`SingleThreaded`]: ExecutorKind::SingleThreaded
199+
pub fn single_threaded() -> Self {
200+
let mut schedule = Self::default();
201+
schedule.set_executor_kind(ExecutorKind::SingleThreaded);
202+
schedule
203+
}
204+
193205
/// Add a collection of systems to the schedule.
194206
pub fn add_systems<M>(&mut self, systems: impl IntoSystemConfigs<M>) -> &mut Self {
195207
self.graph.process_configs(systems.into_configs(), false);

0 commit comments

Comments
 (0)