Update benchmarks

Use fixed generators
Correctly pass parameters
This commit is contained in:
lyxia 2016-05-05 01:26:47 +02:00
parent 9e7b5994f2
commit decede85a6

View File

@ -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