clustering-0.1.0: benchmarks/bench.hs
import Control.Monad (replicateM)
import Criterion.Main
import qualified Data.Clustering.Hierarchical as C
import qualified Data.Vector as V
import System.Random.MWC
import AI.Clustering.Hierarchical
import AI.Clustering.Hierarchical.Types ((!))
randSample :: IO [V.Vector Double]
randSample = do
g <- create
replicateM 2000 $ uniformVector g 5
main :: IO ()
main = do
xs <- randSample
let dists = computeDists euclidean $ V.fromList xs
fn i j = dists ! (i,j)
defaultMain
[ bgroup "AI.Clustering.Hierarchical"
[ bench "Average Linkage (n = 10)" $
whnf (\x -> hclust Average x fn) $! V.enumFromN 0 10
, bench "Average Linkage (n = 100)" $
whnf (\x -> hclust Average x fn) $! V.enumFromN 0 100
, bench "Average Linkage (n = 1000)" $
whnf (\x -> hclust Average x fn) $! V.enumFromN 0 1000
]
, bgroup "Data.Clustering.Hierarchical"
[ bench "Average Linkage (n = 10)" $
whnf (\x -> C.dendrogram C.UPGMA x euclidean) $! take 10 xs
, bench "Average Linkage (n = 100)" $
whnf (\x -> C.dendrogram C.UPGMA x euclidean) $! take 100 xs
, bench "Average Linkage (n = 1000)" $
whnf (\x -> C.dendrogram C.UPGMA x euclidean) $! take 1000 xs
]
]