about summary refs log tree commit diff
path: root/users/glittershark/xanthous/bench/Xanthous/Generators/UtilBench.hs
--------------------------------------------------------------------------------
module Xanthous.Generators.UtilBench (benchmark, main) where
--------------------------------------------------------------------------------
import           Bench.Prelude
--------------------------------------------------------------------------------
import           Data.Array.IArray
import           Data.Array.Unboxed
import           System.Random (getStdGen)
--------------------------------------------------------------------------------
import           Xanthous.Generators.Util
import qualified Xanthous.Generators.CaveAutomata as CaveAutomata
import           Xanthous.Data (Dimensions'(..))
--------------------------------------------------------------------------------

main :: IO ()
main = defaultMain [benchmark]

--------------------------------------------------------------------------------

benchmark :: Benchmark
benchmark = bgroup "Generators.Util"
  [ bgroup "floodFill"
    [ env (NFWrapper <$> cells) $ \(NFWrapper ir) ->
        bench "checkerboard" $ nf (floodFill ir) (1,0)
    ]
  ]
  where
    cells :: IO Cells
    cells = CaveAutomata.generate
      CaveAutomata.defaultParams
      (Dimensions 50 50)
      <$> getStdGen

newtype NFWrapper a = NFWrapper a

instance NFData (NFWrapper a) where
  rnf (NFWrapper x) = x `seq` ()