{-|
Module : Bench
Description : Benchmark of Multilinear library
Copyright : (c) Artur M. Brodzki, 2018
License : BSD3
Maintainer : artur@brodzki.org
Stability : experimental
Portability : Windows/POSIX
-}
module Main (
main
) where
import Control.DeepSeq
import Criterion.Main
import Criterion.Measurement as Meas
import Criterion.Types
import Multilinear.Generic
import qualified Multilinear.Matrix as Matrix
m1 :: Tensor Double
m1 = Matrix.fromIndices "ij" 1000 1000 $ \i j -> fromIntegral (2*i) - exp (fromIntegral j)
m2 :: Tensor Double
m2 = Matrix.fromIndices "jk" 1000 1000 $ \i j -> sin (fromIntegral i) + cos (fromIntegral j)
main :: IO ()
main = do
putStrLn "Two matrices 1000x1000 multiplying..."
(meas,_) <- Meas.measure ( nfIO $ (m1 * m2) `deepseq` putStrLn "End!" ) 1
putStrLn $ "Measured time: " ++ show (measCpuTime meas) ++ " s."
return ()