criterion-0.6.0.0: examples/Tiny.hs
{-# LANGUAGE ScopedTypeVariables #-}
import Criterion.Main
import Control.Parallel
import qualified Data.IntMap as I
import Data.List (foldl')
import Criterion.Config
main = defaultMainWith defaultConfig (return ()) [
bgroup "fib" [
bench "fib 10" $ whnf fib 10
, bench "fib 20" $ whnf fib 20
, bench "fib 30" $ whnf fib 30
],
bgroup "intmap" [
bench "intmap 25k" $ whnf intmap 25000
, bench "intmap 50k" $ whnf intmap 50000
, bench "intmap 75k" $ whnf intmap 75000
]
]
fib :: Int -> Int
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)
intmap :: Int -> I.IntMap Int
intmap n = foldl' (\m k -> I.insert k 33 m) I.empty [0..n]