Changelog

criterion

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,())
             ]
         ]