genvalidity-criterion 0.0.0.0 → 0.1.0.0
raw patch · 3 files changed
+34/−20 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Data.GenValidity.Criterion: genBenchSizes :: NFData a => String -> Gen a -> Benchmark
Files
- bench/Main.hs +1/−0
- genvalidity-criterion.cabal +2/−2
- src/Data/GenValidity/Criterion.hs +31/−18
bench/Main.hs view
@@ -46,4 +46,5 @@ , genValidBench @Float , genValidBench @Double , genValidBench @(Fixed E12)+ , genValidBench @String ]
genvalidity-criterion.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 55f101899e3757aeae67655460610eadf78922eb5e875e50782dc9f090bf4467+-- hash: d89b9a832713070f3bd9773ef7f4d8776be89292d63e80c7cbe6444950493145 name: genvalidity-criterion-version: 0.0.0.0+version: 0.1.0.0 synopsis: Criterion benchmarks for generators category: Validity homepage: https://github.com/NorfairKing/validity#readme
src/Data/GenValidity/Criterion.hs view
@@ -4,45 +4,58 @@ -- | Benchmarks for generators module Data.GenValidity.Criterion- ( genValidityBench- , genUncheckedBench- , genValidBench- , genBench- ) where+ ( genValidityBench,+ genUncheckedBench,+ genValidBench,+ genBenchSizes,+ genBench,+ )+where import Control.DeepSeq+import Criterion import Data.GenValidity import Data.Typeable import Test.QuickCheck -import Criterion- -- | Benchmarks for both genUnchecked and genValid genValidityBench ::- forall a. (Typeable a, NFData a, GenUnchecked a, GenValid a)- => Benchmark+ forall a.+ (Typeable a, NFData a, GenUnchecked a, GenValid a) =>+ Benchmark genValidityBench = bgroup (unwords ["GenValidity", nameOf @a]) [genValidBench @a, genUncheckedBench @a] -- | Benchmarks for both genUnchecked genUncheckedBench ::- forall a. (Typeable a, NFData a, GenUnchecked a)- => Benchmark-genUncheckedBench = genBench (unwords ["genUnchecked", nameOf @a]) (genUnchecked @a)+ forall a.+ (Typeable a, NFData a, GenUnchecked a) =>+ Benchmark+genUncheckedBench = genBenchSizes (unwords ["genUnchecked", nameOf @a]) (genUnchecked @a) -- | Benchmarks for both genValid genValidBench ::- forall a. (Typeable a, NFData a, GenValid a)- => Benchmark-genValidBench = genBench (unwords ["genValid", nameOf @a]) (genValid @a)+ forall a.+ (Typeable a, NFData a, GenValid a) =>+ Benchmark+genValidBench = genBenchSizes (unwords ["genValid", nameOf @a]) (genValid @a) +-- | Benchmarks a generator with some default sizes+genBenchSizes :: NFData a => String -> Gen a -> Benchmark+genBenchSizes name gen =+ bgroup name $+ let bi i = genBench ("size " <> show i) (resize i gen)+ in [bi 8, bi 16, bi 32, bi 64]+ -- | Benchmarks a generator with a given name genBench :: NFData a => String -> Gen a -> Benchmark-genBench name gen = bench name $ nfIO $ generate (resize 30 gen)+genBench name gen =+ bench name $ nfIO $ generate gen nameOf ::- forall a. Typeable a- => String+ forall a.+ Typeable a =>+ String nameOf = let s = show $ typeRep (Proxy @a) in if ' ' `elem` s