Skip to content
This repository was archived by the owner on Nov 27, 2022. It is now read-only.

Commit eca72a2

Browse files
committed
Use par_join in specs heavy_compute bench
1 parent b9e42f3 commit eca72a2

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

src/specs/heavy_compute.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
use cgmath::*;
2-
use specs::prelude::*;
2+
use rayon::prelude::*;
3+
use specs::{prelude::*, ParJoin};
34
use specs_derive::*;
5+
46
#[derive(Copy, Clone, Component)]
57
#[storage(VecStorage)]
68
struct Transform(Matrix4<f32>);
@@ -23,12 +25,14 @@ impl<'a> System<'a> for HeavyComputeSystem {
2325

2426
fn run(&mut self, (mut pos_store, mut mat_store): Self::SystemData) {
2527
use cgmath::Transform;
26-
for (pos, mat) in (&mut pos_store, &mut mat_store).join() {
27-
for _ in 0..100 {
28-
mat.0 = mat.0.invert().unwrap();
29-
}
30-
pos.0 = mat.0.transform_vector(pos.0);
31-
}
28+
(&mut pos_store, &mut mat_store)
29+
.par_join()
30+
.for_each(|(pos, mat)| {
31+
for _ in 0..100 {
32+
mat.0 = mat.0.invert().unwrap();
33+
}
34+
pos.0 = mat.0.transform_vector(pos.0);
35+
});
3236
}
3337
}
3438

0 commit comments

Comments
 (0)