about summary refs log tree commit diff
path: root/users/aspen/xanthous/bench/Xanthous/Generators/UtilBench.hs
blob: 56310e691c334d44fdd3f192ea0fce7beeb7896b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
--------------------------------------------------------------------------------
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` ()