From 6ca3acbeff334e5ebbf4f18b1b67b248137e0070 Mon Sep 17 00:00:00 2001 From: timedout Date: Wed, 17 Jun 2026 21:20:27 +0100 Subject: [PATCH] perf: Use a hashmap for full-state filtering --- src/service/rooms/event_handler/fetch_state.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/service/rooms/event_handler/fetch_state.rs b/src/service/rooms/event_handler/fetch_state.rs index ae306014f..22f8c6acd 100644 --- a/src/service/rooms/event_handler/fetch_state.rs +++ b/src/service/rooms/event_handler/fetch_state.rs @@ -1,6 +1,7 @@ use std::{ cmp::max, - collections::{HashMap, hash_map}, + collections::{HashMap, HashSet, hash_map}, + hash::{BuildHasherDefault, DefaultHasher}, time::{Duration, Instant}, }; @@ -136,7 +137,8 @@ pub(super) async fn fetch_state( // arbitrary state injection. // Atomic fetch does not have this problem as each PDU is evaluated // individually. - let expected = &res.pdu_ids; + let expected: &HashSet> = + &HashSet::from_iter(res.pdu_ids.clone()); state .into_iter() .stream()