@@ -67,17 +67,25 @@ bInsert =
6767 bgroup " absent" bInsertAbsent
6868 ]
6969
70+ -- | FIXME: This is with present keys, but mostly new values
7071bInsertPresent :: [Benchmark ]
7172bInsertPresent =
72- [ bgroup' " Bytes" undefined b,
73- bgroup' " Int" setupInts b
73+ [ bgroup'WithSizes sizes " Bytes" setupBytes b,
74+ bgroup'WithSizes sizes " Int" setupInts b
7475 ]
7576 where
77+ sizes = filter (/= 0 ) defaultSizes
78+ b s =
79+ bench (show s)
80+ . whnf (\ (m, kvs) -> foldl' (\ () (k, v) -> HM. insert k v m `seq` () ) () kvs)
81+ setupBytes size gen = do
82+ m <- genBytesMap size gen
83+ let kvs = zip (Data.List. cycle (HM. keys m)) [0 .. ]
84+ return (m, take 100 kvs)
7685 setupInts size gen = do
7786 m <- genIntMap size gen
78- let ks = Data.List. repeat (HM. keys m)
79- return (m, take 100 ks)
80- b s = bench (show s) . undefined
87+ let kvs = zip (Data.List. cycle (HM. keys m)) [0 .. ]
88+ return (m, take 100 kvs)
8189
8290bInsertAbsent :: [Benchmark ]
8391bInsertAbsent =
@@ -189,7 +197,16 @@ bgroup' ::
189197 (Int -> IOGenM StdGen -> IO env ) ->
190198 (Int -> env -> Benchmark ) ->
191199 Benchmark
192- bgroup' name setup b = bgroup name [env' setup b s | s <- defaultSizes]
200+ bgroup' = bgroup'WithSizes defaultSizes
201+
202+ bgroup'WithSizes ::
203+ (NFData env ) =>
204+ [Int ] ->
205+ String ->
206+ (Int -> IOGenM StdGen -> IO env ) ->
207+ (Int -> env -> Benchmark ) ->
208+ Benchmark
209+ bgroup'WithSizes sizes name setup b = bgroup name [env' setup b s | s <- sizes]
193210
194211env' ::
195212 (NFData env ) =>
0 commit comments