Ordenar en paralelo en Rust
par_sort divide, ordena y fusiona — vale la pena cuando el slice es grande.
use rayon::prelude::*;
fn main() {
let mut values: Vec<u64> = (0..200_000)
.map(|n| (n * 2_654_435_761) % 100_000)
.collect();
values.par_sort_unstable();
println!("{:?}", &values[..5]);
let mut words = vec!["kiwi", "fig", "banana", "plum"];
words.par_sort_by_key(|w| w.len());
println!("{:?}", words);
}
Cómo funciona
par_sort_unstablees el más rápido cuando los iguales dan lo mismo.par_sort_by_keytoma el mismo closure de clave que la forma en serie.- Los slices chicos caen solos a un ordenamiento en serie.
Palabras clave y builtins usados aquí
Vecfnletmutu64use
El intento, en números
- Líneas
- 14
- Caracteres a escribir
- 307
- Tokens
- 113
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 65 segundos.
Paso 3 de 3 en Iteradores paralelos; paso 3 de 9 en Paralelismo de datos con rayon.