简介
该库提供了多线程的并发执行,用于优化 CPU 密集型任务的执行效率,如下是简单示例。
use rayon::prelude::*;
fn main() {
//let result: i64 = (1..1_0000_0000).into_iter().map(|i| i + i).sum();
let result: i64 = (1..1_0000_0000).into_par_iter().map(|i| i + i).sum();
println!("{result}");
}
编译完成之后可以通过 time target/debug/hello
查看执行时间,如下是在 8 核上的执行。
$ time target/debug/hello
9999999900000000
real 0m1.222s
user 0m1.218s
sys 0m0.002s
$ time target/debug/hello
9999999900000000
real 0m0.569s
user 0m4.423s
sys 0m0.013s
从 real
结果上看,确实快了很多,有两倍多的提升,也就是说默认是 CPU 核数的并发,但性能并非与核数相关的线性增长。
特性
该库可以很简单的将任务并行执行,注意,是 CPU 密集型,不太适合 IO 密集型任务。