ExpertiDict

Rust · Intermediário · Inglês · Técnico

rayon

/ˈreɪɑːn/substantivo

Crate de paralelismo de dados que transforma iteradores em paralelos com par_iter. Distribui o trabalho em um pool de threads com roubo de tarefas.

Onde usar

Aparece quando um map ou sum sobre uma coleção grande pode usar todos os núcleos. Basta trocar iter por par_iter, desde que a closure seja Send e Sync.

Em código

use rayon::prelude::*;
let v: Vec<u64> = (1..=1000).collect();
let s: u64 = v
  .par_iter()
  .map(|x| x * x)
  .sum();
println!("{s}");

Exemplos

Swap iter for par_iter with rayon.

Troque iter por par_iter com o rayon.

Rayon splits the work across all cores.

O rayon divide o trabalho entre todos os núcleos.

Cuidado

Em coleções pequenas, a divisão e a sincronização podem custar mais que o ganho.

Sinônimos

paralelismo de dados

Veja também

Todos os termos de Rust