Rust 并行执行库 Rayon 详解

2024-11-09 rust language

简介

该库提供了多线程的并发执行,用于优化 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 密集型任务。