Add a par_sum example

This commit is contained in:
Stjepan Glavina 2020-05-27 12:21:09 +02:00
parent 32f352e6a2
commit 4f210e1063
1 changed files with 26 additions and 0 deletions

26
examples/par_sum.rs Normal file
View File

@ -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());
}