Add a par_sum example
This commit is contained in:
parent
32f352e6a2
commit
4f210e1063
|
@ -0,0 +1,26 @@
|
|||
use easy_parallel::Parallel;
|
||||
|
||||
fn par_sum(v: &[i32]) -> i32 {
|
||||
const THRESHOLD: usize = 100;
|
||||
|
||||
if v.len() <= THRESHOLD {
|
||||
v.iter().copied().sum()
|
||||
} else {
|
||||
let half = (v.len() + 1) / 2;
|
||||
Parallel::new()
|
||||
.each(v.chunks(half), par_sum)
|
||||
.run()
|
||||
.into_iter()
|
||||
.sum()
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let mut v = Vec::new();
|
||||
for i in 0..10_000 {
|
||||
v.push(i);
|
||||
}
|
||||
|
||||
let sum = dbg!(par_sum(&v));
|
||||
assert_eq!(sum, v.into_iter().sum());
|
||||
}
|
Loading…
Reference in New Issue