packages feed

Hungarian-Munkres-0.1.4: benchmarks/bench.hs

import Algorithms.Hungarian
import Criterion.Main
import Data.Algorithm.Munkres
import Data.Array.Unboxed
import System.Random

sample :: [Double]
sample = take 4000 $ randomRs (-100, 100) (mkStdGen 4)

sample' :: [Double]
sample' = take 40000 $ randomRs (-1000, 1000) (mkStdGen 24)

sampleArray :: UArray (Int, Int) Double
sampleArray = listArray ((1,1), (40,50)) sample

sampleArray' :: UArray (Int, Int) Double
sampleArray' = listArray ((1,1), (200,200)) sample'

main :: IO ()
main = defaultMain 
    [ bgroup "Hungarian Algorithm Benchmarks"
        [ bench "C version (40 * 50)" $ nf (\x -> hungarian x 40 50) sample
        , bench "Pure Haskell (40 * 50)" $ nf hungarianMethodDouble sampleArray
        , bench "C version (200 * 200)" $ nf (\x -> hungarian x 200 200) sample'
        , bench "Pure Haskell (200 * 200)" $ nf hungarianMethodDouble sampleArray'
        ]
    ]