Files

39 lines
1.2 KiB
Haskell

import Criterion.Main
import RandomHelp
import Shader.Poke.Triangulate
import Geometry
import Dodge.Creature.Inanimate
import System.Random
import Control.Monad (replicateM)
import Data.Functor ((<&>))
import Control.Monad.State
import Data.List (zip4)
main :: IO ()
main = do
--[ps1, ps2, ps3, ps4] <- mapM randomPoints [5,10,50,500]
[ps1, ps2,ps3] <- mapM randomPoints [5,10,50]
-- fs <- replicateM 500 (randomRIO (1,20))
defaultMain
[ bgroup "polyToTris tests"
[ bench "polyToTris 5" $ nf polyToTris ps1
, bench "polyToTris 10" $ nf polyToTris ps2
, bench "polyToTris 50" $ nf polyToTris ps3
--, bench "polyToTris 500" $ nf polyToTris ps4
]
, bgroup "polyToTriFold tests"
[ bench "polyToTriFold 5" $ nf polyToTris'' ps1
, bench "polyToTriFold 10" $ nf polyToTris'' ps2
, bench "polyToTriFold 50" $ nf polyToTris'' ps3
--, bench "polyToTriFold 500" $ nf polyToTris'' ps4
]
]
--uncurry4 f (a,b,c,d) = f a b c d
randomPoints :: Int -> IO [Point2]
randomPoints i = getStdGen <&> evalState (replicateM i $ randInCirc 500)