mirror of
https://github.com/Lysxia/generic-random.git
synced 2024-09-19 05:17:18 +03:00
Update benchmarks
Use fixed generators Correctly pass parameters
This commit is contained in:
parent
9e7b5994f2
commit
decede85a6
@ -2,14 +2,17 @@
|
||||
module Main where
|
||||
|
||||
import Control.Applicative
|
||||
import Control.Monad
|
||||
import Control.Monad.Trans.Class
|
||||
import Data.Bool
|
||||
import Data.Data
|
||||
import Data.Function
|
||||
import Data.Functor
|
||||
import GHC.Generics
|
||||
import Control.DeepSeq
|
||||
import Criterion.Main
|
||||
import Test.QuickCheck
|
||||
import Test.QuickCheck.Gen
|
||||
import Test.QuickCheck.Random
|
||||
import Control.Exception ( evaluate )
|
||||
import Data.Random.Generics
|
||||
import Data.Random.Generics.Internal
|
||||
@ -36,7 +39,7 @@ gen2 n = g
|
||||
(k (n+1) L)
|
||||
(gen' (n+1) $ \m l -> gen' m $ \m r -> k m (N l r))
|
||||
|
||||
main = defaultMain $ liftA2 (&)
|
||||
main = getGs >>= \gs -> defaultMain $ liftA2 (\n f -> f n gs)
|
||||
[4 ^ e | e <- [1 .. 5]]
|
||||
|
||||
-- Singular rejection sampling
|
||||
@ -60,10 +63,16 @@ main = defaultMain $ liftA2 (&)
|
||||
, bg' "P-recomp" generatorP'
|
||||
]
|
||||
|
||||
bg, bg' :: String -> (Int -> Gen T) -> Int -> Benchmark
|
||||
bg name gen n = bench (name ++ "_" ++ show n) . nfIO . generateT $ gen n
|
||||
bg' name gen n = bench (name ++ "_" ++ show n) . nfIO $
|
||||
evaluate n >>= generateT . gen
|
||||
bg, bg' :: String -> (Int -> Gen T) -> Int -> [QCGen] -> Benchmark
|
||||
bg name gen n gs =
|
||||
bench (name ++ "_" ++ show n) $
|
||||
nf (fmap (\g -> unGen gg g 0)) gs
|
||||
where
|
||||
gg = gen n
|
||||
|
||||
generateT :: Gen T -> IO T
|
||||
generateT = generate
|
||||
bg' name gen n gs =
|
||||
bench (name ++ "_" ++ show n) $
|
||||
nf (fmap (\(n, g) -> unGen (gen n) g 0)) (fmap ((,) n) gs)
|
||||
|
||||
getGs :: IO [QCGen]
|
||||
getGs = replicateM 100 newQCGen
|
||||
|
Loading…
Reference in New Issue
Block a user