Add the rayon and rayon_sorted algorithms
This commit is contained in:
parent
a6afc0b406
commit
d8f34487dc
4 changed files with 20 additions and 1 deletions
|
@ -9,6 +9,7 @@ publish = false
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
pbkdf2 = "0.12.2"
|
pbkdf2 = "0.12.2"
|
||||||
|
rayon = { version = "1.10.0", default-features = false }
|
||||||
sha2 = "0.10.8"
|
sha2 = "0.10.8"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
|
|
|
@ -4,7 +4,11 @@ use rust_job_scheduling::data::SMALL;
|
||||||
use rust_job_scheduling::Task;
|
use rust_job_scheduling::Task;
|
||||||
|
|
||||||
const TEST_DATA: &[(&str, &[Task])] = &[("small", SMALL)];
|
const TEST_DATA: &[(&str, &[Task])] = &[("small", SMALL)];
|
||||||
const TEST_FUNCS: &[(&str, &dyn Fn(&[Task]))] = &[("single thread", &single_thread)];
|
const TEST_FUNCS: &[(&str, &dyn Fn(&[Task]))] = &[
|
||||||
|
("single thread", &single_thread),
|
||||||
|
("rayon", &rayon),
|
||||||
|
("rayon sorted", &rayon_sorted),
|
||||||
|
];
|
||||||
|
|
||||||
fn job_scheduling_benchmark(c: &mut Criterion) {
|
fn job_scheduling_benchmark(c: &mut Criterion) {
|
||||||
let mut group = c.benchmark_group("job_scheduling");
|
let mut group = c.benchmark_group("job_scheduling");
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
mod rayon;
|
||||||
mod single_thread;
|
mod single_thread;
|
||||||
|
|
||||||
|
pub use rayon::{rayon, rayon_sorted};
|
||||||
pub use single_thread::single_thread;
|
pub use single_thread::single_thread;
|
||||||
|
|
12
src/algorithm/rayon.rs
Normal file
12
src/algorithm/rayon.rs
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
use crate::Task;
|
||||||
|
use rayon::prelude::*;
|
||||||
|
|
||||||
|
pub fn rayon(data: &[Task]) {
|
||||||
|
data.into_par_iter().for_each(|task| task.execute());
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn rayon_sorted(data: &[Task]) {
|
||||||
|
let mut data = data.to_vec();
|
||||||
|
data.sort();
|
||||||
|
rayon(&data)
|
||||||
|
}
|
Loading…
Reference in a new issue