|
1 | 1 | module Main where |
2 | 2 |
|
| 3 | +import Criterion.Main (bench, bgroup, defaultMain, env, whnf) |
3 | 4 | import qualified Data.BloomFilter.Blocked as B.Blocked |
4 | 5 | import qualified Data.BloomFilter.Classic as B.Classic |
5 | | -import Data.BloomFilter.Hash (Hashable (..), hash64) |
6 | | - |
| 6 | +import Data.BloomFilter.Hash (Hashable (..)) |
7 | 7 | import Data.Word (Word64) |
8 | | -import System.Random |
9 | | - |
10 | | -import Criterion.Main |
| 8 | +import System.Random (StdGen, newStdGen, uniform) |
11 | 9 |
|
12 | 10 | main :: IO () |
13 | 11 | main = |
@@ -42,11 +40,13 @@ main = |
42 | 40 |
|
43 | 41 | constructBloom_classic :: Int -> Double -> StdGen -> B.Classic.Bloom Word64 |
44 | 42 | constructBloom_classic n fpr g0 = |
45 | | - B.Classic.unfold (B.Classic.sizeForFPR fpr n) (nextElement n) (g0, 0) |
| 43 | + let (!salt, !g1) = uniform g0 in |
| 44 | + B.Classic.unfold salt (B.Classic.sizeForFPR fpr n) (nextElement n) (g1, 0) |
46 | 45 |
|
47 | 46 | constructBloom_blocked :: Int -> Double -> StdGen -> B.Blocked.Bloom Word64 |
48 | 47 | constructBloom_blocked n fpr g0 = |
49 | | - B.Blocked.unfold (B.Blocked.sizeForFPR fpr n) (nextElement n) (g0, 0) |
| 48 | + let (!salt, !g1) = uniform g0 in |
| 49 | + B.Blocked.unfold salt (B.Blocked.sizeForFPR fpr n) (nextElement n) (g1, 0) |
50 | 50 |
|
51 | 51 | {-# INLINE nextElement #-} |
52 | 52 | nextElement :: Int -> (StdGen, Int) -> Maybe (Word64, (StdGen, Int)) |
|
0 commit comments