diff --git a/bench/Bench.hs b/bench/Bench.hs index 2a50cac83..7a0c03590 100644 --- a/bench/Bench.hs +++ b/bench/Bench.hs @@ -1,4 +1,25 @@ import Criterion.Main +import Dodge.RandomHelp + +import Geometry + +import System.Random +import Control.Monad.State +import Data.List (zip4) + main :: IO () -main = putStrLn "h" +main = do + [ps1, ps2, ps3, ps4] <- mapM randomPoints [500,500,500,500] + fs <- sequence $ replicate 500 (randomRIO (1,20)) + defaultMain + [ bgroup "circLine tests" + [ bench "circLine" $ nf (map $ uncurry4 circOnLine) (zip4 ps1 ps2 ps3 fs) + , bench "circLine'" $ nf (map $ uncurry4 circOnLine') (zip4 ps1 ps2 ps3 fs) + ] + ] + +uncurry4 f (a,b,c,d) = f a b c d + +randomPoints :: Int -> IO [Point2] +randomPoints i = getStdGen >>= return . evalState (sequence $ replicate i $ randInCirc 500) diff --git a/package.yaml b/package.yaml index 63eef0d8d..17b7c70f9 100644 --- a/package.yaml +++ b/package.yaml @@ -84,6 +84,7 @@ benchmarks: loop-benchmarks: dependencies: - criterion + - loop ghc-options: - -threaded - -O2