packages feed

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]
    ]
  ]