packages feed

tasklite-core-0.3.0.0: benchmarks/Main.hs

module Main where

import Criterion.Main (bench, bgroup, defaultMain, whnf)
import Protolude (
  IO,
  Int,
  Maybe (..),
  Num ((+), (-)),
  Ord ((<)),
  otherwise,
  ($),
 )


fib :: Int -> Maybe Int
fib m
  | m < 0 = Nothing
  | otherwise = Just $ go m
  where
    go 0 = 0
    go 1 = 1
    go n = go (n - 1) + go (n - 2)


main :: IO ()
main =
  defaultMain
    [ bgroup
        "fib"
        [ bench "1" $ whnf fib 1
        , bench "5" $ whnf fib 5
        , bench "9" $ whnf fib 9
        , bench "11" $ whnf fib 11
        ]
    ]