{-# LANGUAGE BangPatterns #-} -- module StraightUp where import Control.Monad.Random import qualified Data.Vector.Primitive as V import Data.RangeMin.Fusion (replicateM) import Criterion.Main import Criterion.Config import Data.RangeMin n :: Int n = 1000000 {-# NOINLINE performRM #-} performRM :: V.Vector Int -> Int performRM ys = unsafeIntRangeMin ys 0 1 main :: IO () main = do !xs <- replicateM n getRandom--withSystemRandom $ \ gen -> uniformVector gen n :: IO (V.Vector Int) let myBench = bench (show n) (whnf performRM xs) V.foldr seq (return ()) xs defaultMainWith defaultConfig{cfgPerformGC = ljust True} (return ()) [myBench]