packages feed

criterion-0.2.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
import qualified Criterion.MultiMap as M

myConfig = defaultConfig {
             -- Always display an 800x600 window.
             cfgPlot = M.singleton KernelDensity (Window 800 600)
           }

main = defaultMainWith myConfig [
         bench "fib 30" $ B fib 30
       , bench "intmap 50k" $ B intmap 50000
       , bench "intmap 75k" $ B 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]