packages feed

teardown-0.4.1.0: benchmark/Main.hs

{-# LANGUAGE CPP               #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
module Main where

import RIO

#if MIN_VERSION_gauge(0,2,0)
import Gauge
#else
import Gauge
import Gauge.Main (defaultMain)
#endif

import Control.Teardown (newTeardown, runTeardown_)

main :: IO ()
main = defaultMain
  [ bgroup
      "simple IO unit return"
      [ bench "without teardown" (whnfIO $ return ())
      , env
        (newTeardown "benchmark" (return () :: IO ()))
        (\unitTeardown ->
          bench "with teardown" (whnfIO $ runTeardown_ unitTeardown)
        )
      ]
  , env
      (sequence (replicate 1000 (newTeardown "benchmark" (return () :: IO ())))
       >>= newTeardown "parent")
      (\composedTeardown ->
          bench "teardown list" (whnfIO $ runTeardown_ composedTeardown))
  ]