From da884fcb87a831716c524e9b317846d942b7289a Mon Sep 17 00:00:00 2001 From: shamardy Date: Mon, 30 Sep 2024 12:04:33 +0300 Subject: [PATCH] optimize `clear_expired_entries` --- mm2src/common/expirable_map.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mm2src/common/expirable_map.rs b/mm2src/common/expirable_map.rs index ee600ddfd7..fb55fb687d 100644 --- a/mm2src/common/expirable_map.rs +++ b/mm2src/common/expirable_map.rs @@ -77,14 +77,14 @@ impl ExpirableMap { /// Removes expired entries from the map. fn clear_expired_entries(&mut self) { - let keys_to_remove: Vec<_> = self - .expiries - .range(..=Instant::now()) - .map(|(exp, key)| (*exp, key.clone())) - .collect(); - for (exp, key) in keys_to_remove { + let now = Instant::now(); + + while let Some((exp, key)) = self.expiries.pop_first() { + if exp > now { + self.expiries.insert(exp, key); + break; + } self.map.remove(&key); - self.expiries.remove(&exp); } } }