aboutsummaryrefslogtreecommitdiff
path: root/bench/Main.hs
diff options
context:
space:
mode:
authorTom Smeding <tom@tomsmeding.com>2024-05-23 00:18:17 +0200
committerTom Smeding <tom@tomsmeding.com>2024-05-23 00:18:17 +0200
commita0010622885dcb55a916bf3514c0e9040f6871e9 (patch)
tree9e10c18eaf5c873d50e1f88a3bf114179c151769 /bench/Main.hs
parent4b74d1b1f7c46a4b3907838bee11f669060d3a23 (diff)
Fast numeric operations for Num
Diffstat (limited to 'bench/Main.hs')
-rw-r--r--bench/Main.hs27
1 files changed, 25 insertions, 2 deletions
diff --git a/bench/Main.hs b/bench/Main.hs
index d8582fe..c1fc150 100644
--- a/bench/Main.hs
+++ b/bench/Main.hs
@@ -2,6 +2,7 @@
{-# LANGUAGE TypeApplications #-}
module Main where
+import qualified Numeric.LinearAlgebra as LA
import Test.Tasty.Bench
import Data.Array.Nested
@@ -16,5 +17,27 @@ main = defaultMain
(riota @Double n, riota n)
,bench "sum(*) Double [1e6]" $
let n = 1_000_000
- in nf (\(a, b) -> runScalar (rsumOuter1 (a + b)))
- (riota @Double n, riota n)]]
+ in nf (\(a, b) -> runScalar (rsumOuter1 (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 "hmatrix"
+ [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)))
+ ,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)))
+ ,bench "sum Double [1e6]" $
+ let n = 1_000_000
+ in nf (\a -> LA.sumElements a)
+ (LA.linspace @Double n (fromIntegral 0, fromIntegral (n - 1)))
+ ]
+ ]