Skip to content

Commit 15795ed

Browse files
committed
Refactor a bit
1 parent 2cc872b commit 15795ed

File tree

1 file changed

+29
-25
lines changed

1 file changed

+29
-25
lines changed

benchmarks/FineGrained.hs

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
module Main where
99

10+
import Control.DeepSeq (NFData)
1011
import Control.Monad (replicateM)
1112
import Data.Bits (testBit)
1213
import Data.HashMap.Strict (HashMap)
@@ -31,43 +32,46 @@ main =
3132
bgroup "HashSet" [bSetFromList]
3233
]
3334

34-
defaultGen :: StdGen
35-
defaultGen = mkStdGen 42
36-
3735
defaultSizes :: [Int]
3836
defaultSizes = [0, 1, 10, 100, 1000, 10_000, 100_000]
3937

38+
-- | Length of a 'Bytes' key in bytes.
39+
--
40+
-- For comparison: A SHA256 hash is 32 bytes long.
4041
bytesLength :: Int
4142
bytesLength = 32
4243

44+
-- | Pseudo-random generator for keys etc.
45+
--
46+
-- Change the seed to generate different random elements.
47+
defaultGen :: StdGen
48+
defaultGen = mkStdGen 42
49+
50+
env' ::
51+
(NFData a) =>
52+
Int ->
53+
(Int -> IOGenM StdGen -> IO a) ->
54+
(a -> Benchmarkable) ->
55+
Benchmark
56+
env' size setup run =
57+
env
58+
( do
59+
gen <- newIOGenM defaultGen
60+
setup size gen
61+
)
62+
(\x -> bench (show size) (run x))
63+
4364
bFromList :: Benchmark
4465
bFromList =
4566
bgroup
4667
"fromList"
47-
[ bgroup
48-
"Bytes"
49-
[ env
50-
( do
51-
g <- newIOGenM defaultGen
52-
genNBytes s bytesLength g
53-
)
54-
$ \keys ->
55-
bench (show s) $ whnf (HM.fromList . map (,())) keys
56-
| s <- sizes
57-
],
58-
bgroup
59-
"Int"
60-
[ env
61-
( do
62-
g <- newIOGenM defaultGen
63-
genInts s g
64-
)
65-
$ \keys -> bench (show s) $ whnf (HM.fromList . map (,())) keys
66-
| s <- sizes
67-
]
68+
[ bgroup "Bytes" [env' s setupBytes run | s <- defaultSizes],
69+
bgroup "Int" [env' s genInts run | s <- defaultSizes]
6870
]
6971
where
70-
sizes = defaultSizes
72+
setupBytes s = genNBytes s bytesLength
73+
run :: (Hashable a) => [a] -> Benchmarkable
74+
run = whnf (HM.fromList . map (,()))
7175

7276
bUnion :: Benchmark
7377
bUnion =

0 commit comments

Comments
 (0)