Skip to content

Commit a4a05f4

Browse files
committed
WIP
1 parent 15795ed commit a4a05f4

File tree

1 file changed

+16
-17
lines changed

1 file changed

+16
-17
lines changed

benchmarks/FineGrained.hs

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,22 @@ bUnion =
8282
bgroup "equal" bUnionEqual
8383
]
8484

85+
bUnionDisjoint :: [Benchmark]
86+
bUnionDisjoint =
87+
[ bgroup "Bytes" [env' s setupBytes run | s <- defaultSizes],
88+
bgroup "Int" [env' s setupInts run | s <- defaultSizes]
89+
]
90+
where
91+
run :: (Hashable a) => (HashMap a Int, HashMap a Int) -> Benchmarkable
92+
run = whnf (\(as, bs) -> HM.union as bs)
93+
setupBytes s gen = do
94+
(trues, falses) <- Key.Bytes.genDisjoint s bytesLength gen
95+
return (toMap trues, toMap falses)
96+
setupInts s gen = do
97+
ints <- genInts s gen
98+
let (trues, falses) = Data.List.partition (flip testBit (31 :: Int)) ints
99+
return (toMap trues, toMap falses)
100+
85101
bUnionEqual :: [Benchmark]
86102
bUnionEqual =
87103
[ bgroup "Bytes" [env (bytesEnv s) (bench' s) | s <- defaultSizes],
@@ -98,23 +114,6 @@ bUnionEqual =
98114
ks <- genInts s g
99115
return (toMap ks)
100116

101-
bUnionDisjoint :: [Benchmark]
102-
bUnionDisjoint =
103-
[ bgroup "Bytes" [env (bytesEnv s) (bench' s) | s <- defaultSizes],
104-
bgroup "Int" [env (intsEnv s) (bench' s) | s <- defaultSizes]
105-
]
106-
where
107-
bench' s tup = bench (show s) $ whnf (\(as, bs) -> HM.union as bs) tup
108-
bytesEnv s = do
109-
g <- newIOGenM defaultGen
110-
(trues, falses) <- Key.Bytes.genDisjoint s bytesLength g
111-
return (HM.fromList (map (,()) trues), HM.fromList (map (,()) falses))
112-
intsEnv s = do
113-
g <- newIOGenM defaultGen
114-
ints <- genInts s g
115-
let (trues, falses) = Data.List.partition (flip testBit (31 :: Int)) ints
116-
return (HM.fromList (map (,()) trues), HM.fromList (map (,()) falses))
117-
118117
-- TODO: Separate benchmarks for overlap with pointer eq?!
119118
bUnionOverlap :: [Benchmark]
120119
bUnionOverlap =

0 commit comments

Comments
 (0)