import Algorithms.Hungarian import Criterion.Main import Data.Algorithm.Munkres import Data.Array.Unboxed import System.Random sample :: [Double] sample = take 2000 $ 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' ] ]