packages feed

tensors-0.1.3: bench/Bench.hs

{-# LANGUAGE OverloadedLists #-}
module Main where

import           Criterion.Main
import           Data.Tensor

base = [1..10000] :: Tensor '[100,100] Int
b2se = clone base
b3se = [1..100] :: Tensor '[10,10] Int

main = defaultMain
  [ bgroup "tensor"
    [ bench "identity"    $ nf id (identity :: Tensor '[100,100] Int)
    , bench "clone"       $ nf clone base
    , bench "dyad"        $ nf id (b3se  `dyad` b3se)
    , bench "dot"         $ nf id (base  `dot`  base)
    , bench "dot-2"       $ nf id (b2se  `dot`  b2se)
    , bench "contraction" $ nf (contraction (i0,i1)) base
    ]
  ]