packages feed

multilinear-io-0.2.1: benchmark/Bench.hs

{-|
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 ()