sized-vector-1.3.0.0: bench/coercion.hs
{-# LANGUAGE QuasiQuotes #-}
module Main where
import Control.DeepSeq
import Control.Parallel.Strategies
import Criterion
import Data.Type.Natural
import qualified Data.Vector.Sized as V
import Progression.Main
import System.Environment
main :: IO ()
main = do
name : rest <- getArgs
v10 <- return $!! ((V.replicate [snat|10|] ()) `using` rdeepseq)
v100 <- return $!! ((V.replicate [snat|100|] ()) `using` rdeepseq)
v200 <- return $!! ((V.replicate [snat|200|] ()) `using` rdeepseq)
withArgs (("-n"++name) : rest) $
defaultMain $
bgroup "bench" [ bgroup "reverse"
[ bench "10" $ nf V.reverse v10
, bench "100" $ nf V.reverse v100
, bench "1000" $ nf V.reverse v200
]
, bgroup "intersperse"
[ bench "10" $ nf (V.intersperse ()) v10
, bench "100" $ nf (V.intersperse ()) v100
, bench "200" $ nf (V.intersperse ()) v200
]
]