diff options
| author | Tom Smeding <tom@tomsmeding.com> | 2024-05-23 09:21:15 +0200 | 
|---|---|---|
| committer | Tom Smeding <tom@tomsmeding.com> | 2024-05-23 09:21:15 +0200 | 
| commit | 8ab3e4a3de76305ef700f628ee9046b1c26355ed (patch) | |
| tree | db915bb9f43589fba8a950f15f9db1a34824cc3f | |
| parent | a77f07da16d94b93340bc4fcc391da1e817735d9 (diff) | |
Bench Num against NumElt
| -rw-r--r-- | bench/Main.hs | 25 | 
1 files changed, 20 insertions, 5 deletions
diff --git a/bench/Main.hs b/bench/Main.hs index c1fc150..c4d2879 100644 --- a/bench/Main.hs +++ b/bench/Main.hs @@ -6,6 +6,7 @@ import qualified Numeric.LinearAlgebra as LA  import Test.Tasty.Bench  import Data.Array.Nested +import Data.Array.Nested.Internal (mliftPrim2, arithPromoteRanked2)  main :: IO () @@ -13,6 +14,20 @@ main = defaultMain    [bgroup "Num"      [bench "sum(+) Double [1e6]" $        let n = 1_000_000 +      in nf (\(a, b) -> runScalar (rsumOuter1 (arithPromoteRanked2 (mliftPrim2 (+)) a b))) +            (riota @Double n, riota n) +    ,bench "sum(*) Double [1e6]" $ +      let n = 1_000_000 +      in nf (\(a, b) -> runScalar (rsumOuter1 (arithPromoteRanked2 (mliftPrim2 (*)) a b))) +            (riota @Double n, riota n) +    ,bench "sum Double [1e6]" $ +      let n = 1_000_000 +      in nf (\a -> runScalar (rsumOuter1 a)) +            (riota @Double n) +    ] +  ,bgroup "NumElt" +    [bench "sum(+) Double [1e6]" $ +      let n = 1_000_000        in nf (\(a, b) -> runScalar (rsumOuter1 (a + b)))              (riota @Double n, riota n)      ,bench "sum(*) Double [1e6]" $ @@ -28,16 +43,16 @@ main = defaultMain      [bench "sum(+) Double [1e6]" $        let n = 1_000_000        in nf (\(a, b) -> LA.sumElements (a + b)) -            (LA.linspace @Double n (fromIntegral 0, fromIntegral (n - 1)) -            ,LA.linspace @Double n (fromIntegral 0, fromIntegral (n - 1))) +            (LA.linspace @Double n (0.0, fromIntegral (n - 1)) +            ,LA.linspace @Double n (0.0, fromIntegral (n - 1)))      ,bench "sum(*) Double [1e6]" $        let n = 1_000_000        in nf (\(a, b) -> LA.sumElements (a * b)) -            (LA.linspace @Double n (fromIntegral 0, fromIntegral (n - 1)) -            ,LA.linspace @Double n (fromIntegral 0, fromIntegral (n - 1))) +            (LA.linspace @Double n (0.0, fromIntegral (n - 1)) +            ,LA.linspace @Double n (0.0, fromIntegral (n - 1)))      ,bench "sum Double [1e6]" $        let n = 1_000_000        in nf (\a -> LA.sumElements a) -            (LA.linspace @Double n (fromIntegral 0, fromIntegral (n - 1))) +            (LA.linspace @Double n (0.0, fromIntegral (n - 1)))      ]    ]  | 
