Rust · Intermediário · Inglês · Técnico
rayon
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