
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | import Criterion.Main import qualified Control.DeepSeq as D1 import qualified MyDeepSeq as D2 import qualified MyDeepSeq2 as D3 list :: Int -> [Int] list n = [1..10^n] main :: IO () main = defaultMain [ bgroup "deepseq" [ bench "10^5 elems" $ whnf (uncurry D1.deepseq) (list 5,()) , bench "10^6 elems" $ whnf (uncurry D1.deepseq) (list 6,()) , bench "10^7 elems" $ whnf (uncurry D1.deepseq) (list 7,()) ] , bgroup "generic-deepseq" [ bench "10^5 elems" $ whnf (uncurry D2.deepseq) (list 5,()) , bench "10^6 elems" $ whnf (uncurry D2.deepseq) (list 6,()) , bench "10^7 elems" $ whnf (uncurry D2.deepseq) (list 7,()) ] , bgroup "generic-deepseq2" [ bench "10^5 elems" $ whnf (uncurry D3.deepseq) (list 5,()) , bench "10^6 elems" $ whnf (uncurry D3.deepseq) (list 6,()) , bench "10^7 elems" $ whnf (uncurry D3.deepseq) (list 7,()) ] ] |