module Main where
import Prelude ()
import SDP.SafePrelude
import SDP.Unrolled.IO
import SDP.ByteList.IO
import SDP.Array.IO
import SDP.Bytes.IO
import Criterion.Main ( bench, nfIO, defaultMain )
import Test.QuickCheck
import Test.SDP.Gen
import Control.DeepSeq.SDP as F ( force )
default ()
--------------------------------------------------------------------------------
main :: IO ()
main = do
list <- F.force <$> generate (linearLargeA 100000) :: IO [Int]
array <- newLinearN 100000 list :: IO (IOArray Int Int)
bytes <- newLinearN 100000 list :: IO (IOBytes Int Int)
unrolled <- newLinearN 100000 list :: IO (IOUnrolled Int Int)
bytelist <- newLinearN 100000 list :: IO (IOByteList Int Int)
defaultMain
[
bench "bench-timsort-ioarray" $ nfIO (sortM array >> sortedM array),
bench "bench-timsort-iobytes" $ nfIO (sortM bytes >> sortedM bytes),
bench "bench-timsort-iounrolled" $ nfIO (sortM unrolled >> sortedM unrolled),
bench "bench-timsort-iobytelist" $ nfIO (sortM bytelist >> sortedM bytelist)
]