module Main (main) where import Control.DeepSeq (force) import Control.Exception (evaluate) import List.Shuffle qualified as List import System.Random qualified as Random import Test.Tasty.Bench (bench, defaultMain, whnf) main :: IO () main = do let list = [1 .. 1_000_000] :: [Int] _ <- evaluate (force list) defaultMain [ bench "sample 10/1000000" (whnf (sample 10) (list, Random.mkStdGen 0)), bench "shuffle 1000000" (whnf shuffle (list, Random.mkStdGen 0)) ] sample :: Int -> ([Int], Random.StdGen) -> [Int] sample n (list, gen) = List.sample_ n list gen shuffle :: ([Int], Random.StdGen) -> [Int] shuffle (list, gen) = List.shuffle_ list gen