module Main where import Prelude () import SDP.SafePrelude import Criterion.Main ( env, bench, whnf, defaultMain ) import Test.QuickCheck import Test.SDP.Gen import SDP.Unrolled import SDP.ByteList import SDP.Array import SDP.Bytes import Control.DeepSeq.SDP as F ( force ) default () -------------------------------------------------------------------------------- main :: IO () main = defaultMain [ let arrayEnv = F.force <$> generate (linearLargeA 10000) :: IO (Array Int Int) in env arrayEnv $ bench "bench-timsort-array" . whnf sort, let bytesEnv = F.force <$> generate (linearLargeA 10000) :: IO (Bytes Int Int) in env bytesEnv $ bench "bench-timsort-bytes" . whnf sort, let unrolledEnv = F.force <$> generate (linearLargeA 10000) :: IO (Unrolled Int Int) in env unrolledEnv $ bench "bench-timsort-unrolled" . whnf sort, let bytelistEnv = F.force <$> generate (linearLargeA 10000) :: IO (ByteList Int Int) in env bytelistEnv $ bench "bench-timsort-bytelist" . whnf sort ]