MST

星途 面试题库

面试题:Rust中并行迭代器的基本使用

在Rust中,给定一个包含整数的`Vec`,使用并行迭代器计算所有元素的平方和。请写出具体代码,并解释为什么并行迭代器在此场景下可能会提高性能。
11.8万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
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);
}

并行迭代器提高性能的原因

  1. 多核利用:现代CPU通常有多个核心,并行迭代器能够将计算任务分摊到多个核心上同时执行。在计算平方和时,每个元素的平方计算可以独立进行,并行迭代器可以将不同元素的平方计算分配到不同核心,从而减少总体计算时间。
  2. 减少等待时间:如果计算任务比较耗时,例如元素数量非常多或者单个元素的平方计算很复杂,并行执行可以避免在单核上按顺序逐个计算带来的等待时间。多个核心同时工作,大大加快了整体的计算速度。

在使用并行迭代器时,需要注意开销,如线程创建、任务调度等开销。但对于较大规模的计算任务,并行迭代器带来的性能提升通常是显著的。