Octree-0.6.0.0: tests/benchmark.hs
{-# LANGUAGE FlexibleInstances #-}
module Main(main) where
import Criterion
import Criterion.Main
import Test.QuickCheck(generate, vectorOf, Arbitrary(..))
import Linear.V3
import Data.Octree.Internal
sizes = [100, 1000, 10000]
instance {-# OVERLAPPING #-} Arbitrary (Vector3, Int) where
arbitrary = ((,) <$> (V3 <$> arbitrary <*> arbitrary <*> arbitrary)
<*> arbitrary)
testData :: Int -> IO [(Vector3, Int)]
testData i = generate $ vectorOf i arbitrary
main = defaultMain [
bgroup "insert" [
let i=10^p
in bench (show i) $ nfIO (foldr insert (Leaf [])
<$> testData i)
| p <- [1..4]
]
]