File tree Expand file tree Collapse file tree 1 file changed +33
-0
lines changed
Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Original file line number Diff line number Diff line change 2828 " HashMap.Strict"
2929 [ bFromList,
3030 bInsert,
31+ bDelete,
3132 bUnion,
3233 bDifference
3334 ],
@@ -129,6 +130,38 @@ bInsertAbsentKey =
129130 let kvs = take 100 $ Data.List. cycle $ map (,1 ) $ filter (not . flip HM. member m) ks
130131 return (m, kvs)
131132
133+ -- 100 deletions each, so we get more precise timings
134+ bDelete :: Benchmark
135+ bDelete =
136+ bgroup
137+ " delete"
138+ [ bgroup " presentKey" bDeletePresentKey,
139+ bgroup " absentKey" bDeleteAbsentKey
140+ ]
141+
142+ bDeletePresentKey :: [Benchmark ]
143+ bDeletePresentKey = []
144+
145+ bDeleteAbsentKey :: [Benchmark ]
146+ bDeleteAbsentKey =
147+ [ bgroup' " Bytes" setupBytes b,
148+ bgroup' " Int" setupInts b
149+ ]
150+ where
151+ b s =
152+ bench (show s)
153+ . whnf (\ (m, ks) -> foldl' (\ () k -> HM. delete k m `seq` () ) () ks)
154+ setupBytes size gen = do
155+ m <- genBytesMap size gen
156+ ks0 <- genNBytes 200 bytesLength gen
157+ let ks1 = take 100 $ Data.List. cycle $ filter (not . flip HM. member m) ks0
158+ return (m, ks1)
159+ setupInts size gen = do
160+ m <- genIntMap size gen
161+ ks0 <- genInts 200 gen
162+ let ks1 = take 100 $ Data.List. cycle $ filter (not . flip HM. member m) ks0
163+ return (m, ks1)
164+
132165-- TODO: For the "overlap" and "equal" cases, it would be interesting to
133166-- have separate benchmarks both with and without shared subtrees,
134167-- so we can make use of pointer equality.
You can’t perform that action at this time.
0 commit comments