parallelize longest period finder

This commit is contained in:
2026-04-07 11:46:34 +02:00
parent caaabe204e
commit 3b11af13d0
4 changed files with 74 additions and 2 deletions
+17
View File
@@ -1,4 +1,5 @@
use std::collections::HashMap;
use rayon::prelude::*;
use crate::tea3::Tea3;
@@ -177,3 +178,19 @@ pub fn longest_period() -> (u64, [u8; 5]) {
(best_period, best_seed)
}
pub fn longest_period_parallel() -> (u64, [u8; 5]) {
let limit: usize = 1usize << 40;
(0usize..limit)
.into_par_iter()
.map(|x| {
let seed = Reg5::from_u40(x as u64);
let p = period_h(seed);
(p, seed.0)
})
.reduce(
|| (0u64, [0u8; 5]),
|a, b| if a.0 >= b.0 { a } else { b },
)
}