Skip to content

Commit 71fe97a

Browse files
committed
WIP
1 parent 395a7c3 commit 71fe97a

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

benchmarks/FineGrained.hs

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ main =
2727
[ bgroup
2828
"HashMap.Strict"
2929
[ bFromList,
30+
bLookup,
3031
bInsert,
3132
bDelete,
3233
bUnion,
@@ -61,6 +62,53 @@ bFromList =
6162
setupBytes s gen = genNBytes s bytesLength gen
6263
b s = bench (show s) . whnf (HM.fromList . map (,()))
6364

65+
-- 100 lookups each, so we get more precise timings
66+
bLookup :: Benchmark
67+
bLookup =
68+
bgroup
69+
"lookup"
70+
[ bgroup "presentKey" bLookupPresentKey,
71+
bgroup "absentKey" bLookupAbsentKey
72+
]
73+
74+
bLookupPresentKey :: [Benchmark]
75+
bLookupPresentKey =
76+
[ bgroup'WithSizes sizes "Bytes" setupBytes b,
77+
bgroup'WithSizes sizes "Int" setupInts b
78+
]
79+
where
80+
sizes = filter (/= 0) defaultSizes
81+
b s =
82+
bench (show s)
83+
. whnf (\(m, ks) -> foldl' (\() k -> HM.lookup k m `seq` ()) () ks)
84+
toKs = take 100 . Data.List.cycle . HM.keys
85+
setupBytes size gen = do
86+
m <- genBytesMap size gen
87+
return (m, toKs m)
88+
setupInts size gen = do
89+
m <- genIntMap size gen
90+
return (m, toKs m)
91+
92+
bLookupAbsentKey :: [Benchmark]
93+
bLookupAbsentKey =
94+
[ bgroup' "Bytes" setupBytes b,
95+
bgroup' "Int" setupInts b
96+
]
97+
where
98+
b s =
99+
bench (show s)
100+
. whnf (\(m, ks) -> foldl' (\() k -> HM.lookup k m `seq` ()) () ks)
101+
setupBytes size gen = do
102+
m <- genBytesMap size gen
103+
ks0 <- genNBytes 200 bytesLength gen
104+
let ks1 = take 100 $ Data.List.cycle $ filter (not . flip HM.member m) ks0
105+
return (m, ks1)
106+
setupInts size gen = do
107+
m <- genIntMap size gen
108+
ks0 <- genInts 200 gen
109+
let ks1 = take 100 $ Data.List.cycle $ filter (not . flip HM.member m) ks0
110+
return (m, ks1)
111+
64112
-- 100 insertions each, so we get more precise timings
65113
bInsert :: Benchmark
66114
bInsert =

0 commit comments

Comments
 (0)