27 lines
856 B
Rust
27 lines
856 B
Rust
use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion};
|
|
use rust_job_scheduling::algorithm::*;
|
|
use rust_job_scheduling::data::*;
|
|
use rust_job_scheduling::Task;
|
|
|
|
const TEST_DATA: &[(&str, &[Task])] = &[("10 tasks", T_10), ("500 tasks", T_500)];
|
|
const TEST_FUNCS: &[(&str, &dyn Fn(&[Task]))] = &[
|
|
("single thread", &single_thread),
|
|
("rayon", &rayon),
|
|
("rayon sorted", &rayon_sorted),
|
|
("rayon sorted reverse", &rayon_sorted_reverse),
|
|
];
|
|
|
|
fn job_scheduling_benchmark(c: &mut Criterion) {
|
|
let mut group = c.benchmark_group("job_scheduling");
|
|
for (data_name, data) in TEST_DATA {
|
|
for (func_name, func) in TEST_FUNCS {
|
|
group.bench_with_input(BenchmarkId::new(*func_name, data_name), data, |b, i| {
|
|
b.iter(|| func(i))
|
|
});
|
|
}
|
|
}
|
|
group.finish();
|
|
}
|
|
|
|
criterion_group!(benches, job_scheduling_benchmark);
|
|
criterion_main!(benches);
|