Skip to content

Commit 24e1359

Browse files
committed
WIP
1 parent 0818008 commit 24e1359

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

benchmarks/FineGrained.hs

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ bFromList =
6060
setupBytes s gen = genNBytes s bytesLength gen
6161
b s = bench (show s) . whnf (HM.fromList . map (,()))
6262

63+
-- 100 insertions each, so we get more precise timings
6364
bInsert :: Benchmark
6465
bInsert =
6566
bgroup
@@ -110,25 +111,25 @@ bInsertPresentKeyDifferentValue =
110111
m <- genIntMap size gen
111112
return (m, toKVs m)
112113

113-
-- TODO
114114
bInsertAbsentKey :: [Benchmark]
115115
bInsertAbsentKey =
116-
[ bgroup' "Bytes" genBytesMapsDisjoint b,
117-
bgroup' "Int" genIntMapsDisjoint b
116+
[ bgroup' "Bytes" setupBytes b,
117+
bgroup' "Int" setupInts b
118118
]
119119
where
120-
b s = bench (show s) . whnf (\(as, bs) -> HM.union as bs)
121-
122-
{-
123-
- [ env m $ \d -> bench (show s) $ whnf (\(k, v, m) -> HM.insert k v m) d ]
124-
where m s = do
125-
g <- newIOGenM defaultGen
126-
let hm = HM.empty
127-
forM_ [1..s] $ \v -> do
128-
b <- genBytes 32 g
129-
HMI.unsafeInsert b v hm
130-
return (m, newKeys) -- separate existing, new
131-
-}
120+
b s =
121+
bench (show s)
122+
. whnf (\(m, kvs) -> foldl' (\() (k, v) -> HM.insert k v m `seq` ()) () kvs)
123+
setupBytes size gen = do
124+
m <- genBytesMap size gen
125+
ks <- genNBytes 200 bytesLength gen
126+
let kvs = take 100 $ Data.List.cycle $ map (,1) $ filter (not . flip HM.member m) ks
127+
return (m, kvs)
128+
setupInts size gen = do
129+
m <- genIntMap size gen
130+
ks <- genInts 200 gen
131+
let kvs = take 100 $ Data.List.cycle $ map (,1) $ filter (not . flip HM.member m) ks
132+
return (m, kvs)
132133

133134
-- TODO: For the "overlap" and "equal" cases, it would be interesting to
134135
-- have separate benchmarks both with and without shared subtrees,

0 commit comments

Comments
 (0)