# HG changeset patch # User wenzelm # Date 1709160622 -3600 # Node ID 513829904bebff0cb84638e8a7bf926598addd5b # Parent ea1913c953efaf026e0020e2573bdb89c91749aa more scalable: avoid potentially expensive ordering of underlying key data type, e.g. in MESON.Cache of Naproche; diff -r ea1913c953ef -r 513829904beb src/Tools/Haskell/Haskell.thy --- a/src/Tools/Haskell/Haskell.thy Wed Feb 28 22:11:11 2024 +0100 +++ b/src/Tools/Haskell/Haskell.thy Wed Feb 28 23:50:22 2024 +0100 @@ -3905,9 +3905,8 @@ prune (Cache ref) max_size min_timing = do atomicModifyIORef' ref (\entries -> let - trim x e = if _timing e < min_timing then Map.delete x else id sort = List.sortBy (\(_, e1) (_, e2) -> compare (_access e2) (_access e1)) - entries1 = Map.foldrWithKey trim entries entries + entries1 = Map.filter (\e -> _timing e >= min_timing) entries entries2 = if Map.size entries1 <= max_size then entries1 else Map.fromList $ List.take max_size $ sort $ Map.toList entries1