面试题答案
一键面试use std::thread::available_parallelism;
use rayon::prelude::*;
fn main() {
let numbers = vec![1, 2, 3, 4, 5];
let sum_of_squares: i32 = numbers.par_iter()
.map(|&num| num * num)
.sum();
println!("Sum of squares: {}", sum_of_squares);
}
并行迭代器提高性能的原因
- 多核利用:现代CPU通常有多个核心,并行迭代器能够将计算任务分摊到多个核心上同时执行。在计算平方和时,每个元素的平方计算可以独立进行,并行迭代器可以将不同元素的平方计算分配到不同核心,从而减少总体计算时间。
- 减少等待时间:如果计算任务比较耗时,例如元素数量非常多或者单个元素的平方计算很复杂,并行执行可以避免在单核上按顺序逐个计算带来的等待时间。多个核心同时工作,大大加快了整体的计算速度。
在使用并行迭代器时,需要注意开销,如线程创建、任务调度等开销。但对于较大规模的计算任务,并行迭代器带来的性能提升通常是显著的。