packages feed

binary-list-0.3.1.2: bench/Main.hs

import Data.BinaryList (BinList)
import qualified Data.BinaryList as BL

import Control.DeepSeq
import qualified Data.Foldable as F

import Criterion.Main

instance NFData a => NFData (BinList a) where
  rnf xs = F.foldl1 seq xs `seq` ()

main :: IO ()
main = defaultMain
  [ bgroup "1024"
      [ bench "fromList" $ nf (\i -> BL.fromList [1..i]) (1024 :: Int)
      , bench "fromListWithDefault" $ nf (\i -> BL.fromListWithDefault 0 [1..i]) (513 :: Int)
      , bench "generate" $ nf (\i -> BL.generate i id) 10
      , bench "replicate" $ nf (\i -> BL.replicate i (0 :: Int)) 10
        ]
    ]