packages feed

matrix-0.3.4.0: bench/mult.hs

import Criterion.Main
--
import Data.Matrix

mat :: Int -> Matrix Int
mat n = fromList n n [1..]

testdef :: Int -> Matrix Int
testdef n = multStd (mat n) (mat n)

testdef2 :: Int -> Matrix Int
testdef2 n = multStd2 (mat n) (mat n)

teststr :: Int -> Matrix Int
teststr n = multStrassen (mat n) (mat n)

teststrm :: Int -> Matrix Int
teststrm n = multStrassenMixed (mat n) (mat n)

bmat :: Int -> Benchmark
bmat n = bgroup ("mult" ++ show n)
 [ -- testdef seems to be the slowest in every situation.
   -- We comment it to speed up benchmarking.
   -- bench "Definition" $ nf testdef n
   bench "Definition 2" $ nf testdef2 n
 -- , bench "Strassen" $ nf teststr n
 , bench "Strassen mixed" $ nf teststrm n
 ]

main :: IO ()
main = defaultMain $ fmap bmat [10,25,100,150,250,400,500]