packages feed

primes-type-0.2.0.2: bench/Bench.hs

module Main where

import Criterion
import Criterion.Main

import Data.Numbers.Primes.Type

n = 2 ^ 16
p :: Prime Int
p = getPrime n

main = defaultMain
        [ env (return p) benchPrimes
        ]

benchPrimes p = bgroup "Some benchmarks"
    [ bench "getValue"      $ nf getValue p
    , bench "getIndex"      $ nf getIndex p
    , bench "deconstruct"   $ nf deconstruct p
    , bench "primeIndex"    $ nf primeIndex (getValue p)
    , bench "getPrime"      $ nf (getPrime :: Int -> Prime Int) n
    , bench "maybePrime"    $ nf maybePrime (getValue p)
    , bench "indexedPrimes" $ nf (flip take (indexedPrimes :: [Prime Int])) n
    ]