Vec::retain does not go brrrr

This commit is contained in:
kageru 2021-12-03 18:02:18 +01:00
parent 9a03a4f499
commit 70450dbcdc
Signed by: kageru
GPG Key ID: 8282A2BEA4ADA3D2

View File

@ -39,10 +39,11 @@ fn part2(parsed: &Parsed, bits: usize) -> usize {
let gamma = most_common_at(&matching_gamma, i); let gamma = most_common_at(&matching_gamma, i);
let epsilon = !most_common_at(&matching_epsilon, i); let epsilon = !most_common_at(&matching_epsilon, i);
// TODO: Find out why retain is significantly slower than filter().collect() // TODO: Find out why retain is significantly slower than filter().collect()
matching_gamma.retain(|&n| bit_at(n, i) == gamma); // matching_gamma.retain(|&n| bit_at(n, i) == gamma);
// matching_gamma = matching_gamma.into_iter().filter(|&n| bit_at(n, i) == gamma).collect(); matching_gamma = matching_gamma.into_iter().filter(|&n| bit_at(n, i) == gamma).collect();
if matching_epsilon.len() > 1 { if matching_epsilon.len() > 1 {
matching_epsilon.retain(|&n| bit_at(n, i) == epsilon); // matching_epsilon.retain(|&n| bit_at(n, i) == epsilon);
matching_epsilon = matching_epsilon.into_iter().filter(|&n| bit_at(n, i) == epsilon).collect();
} }
} }
debug_assert_eq!(matching_gamma.len(), 1); debug_assert_eq!(matching_gamma.len(), 1);