Rebase on rayon-1.2.0 and rayon-core-1.6.0#3
Conversation
|
I think you could drop your main handler and scoped pools in favor of https://docs.rs/rayon/1.1.0/rayon/struct.ThreadPoolBuilder.html#method.build_scoped |
|
I've now rebased this on rayon 1.2. I also dropped the |
|
The comparison to rayon-rs master may be more useful: |
|
@Zoxc, can you review this? It would be nice to land in rustc, if only for the dependency updates. |
These adaptors consume may many elements before deferring to a base folder's fullness checks, and so they need to be performed manually. For the `filter`s, there's no way to do it manually (rayon-rs#632), so the specialisations just have to be removed. For `fold` and `find_any` this can be done with a `take_while`. This extends the octillion tests to confirm this behaviour. This makes a program like the following slightly slower compared to the direct `consume_iter` without a check, but it's still faster than the non-specialized form. ``` extern crate test; extern crate rayon; use rayon::prelude::*; fn main() { let count = (0..std::u32::MAX) .into_par_iter() .map(test::black_box) .find_any(|_| test::black_box(false)); println!("{:?}", count); } ``` ``` $ hyperfine ./find-original ./find-no-check ./find-check Benchmark #1: ./find-original Time (mean ± σ): 627.6 ms ± 25.7 ms [User: 7.130 s, System: 0.014 s] Range (min … max): 588.4 ms … 656.4 ms 10 runs Benchmark #2: ./find-no-check Time (mean ± σ): 481.5 ms ± 10.8 ms [User: 5.415 s, System: 0.013 s] Range (min … max): 468.9 ms … 498.2 ms 10 runs Benchmark #3: ./find-check Time (mean ± σ): 562.3 ms ± 11.8 ms [User: 6.363 s, System: 0.013 s] Range (min … max): 542.5 ms … 578.2 ms 10 runs ``` (find-original = without specialization, find-no-check = custom `consume_iter` without `take_while`, find-check = this commit)
Rebase rustc-rayon on rayon-1.2 See also rust-lang/rustc-rayon#3
|
It still needs new crates.io release to make it's way to Rust. |
|
@mati865 I think this did make it into rustc-rayon 0.3.0 -- in fact it was the reason for that release. |
|
That's on the |
This can't be directly merged, since I rebased, but I hope it's useful anyway.
r? @Zoxc