on master help sign in
Move benchmarks of Array.Prim out of common array benchmark mess
commitad1bb0de79e3f52458a1d190785d00e9def82ad7 authoradithyaov <adithya@composewell.com> dateSun 28 Nov 2021, 15:43 (5 years ago) parent2370901
5 files changed+66−21
benchmark/Streamly/Benchmark/Data/Array.hs+3−6 benchmark/Streamly/Benchmark/Data/Array/Prim.hs+58 benchmark/Streamly/Benchmark/Data/ArrayOps.hs+3−11 benchmark/streamly-benchmarks.cabal+1−4 streamly.cabal+1
benchmark/Streamly/Benchmark/Data/Array.hs+3−6
@@ -44,8 +44,7 @@ benchIO name src f = bench name $ nfIO $
4444-- Drain a source that generates an array in the IO monad
4545{-# INLINE benchIOSrc #-}
4646benchIOSrc ::
47−#if !defined(DATA_ARRAY_PRIM) \
48− && !defined(DATA_ARRAY_PRIM_PINNED)
47+#if !defined(DATA_ARRAY_PRIM_PINNED)
4948 NFData a =>
5049#endif
5150 String -> (Int -> IO (Ops.Stream a)) -> Benchmark
@@ -77,7 +76,7 @@ o_1_space_generation value =
7776 (Ops.sourceIntFromToFromList value)
7877 , benchIOSrc "writeN . unfoldr" (Ops.sourceUnfoldr value)
7978 , benchIOSrc "writeN . fromList" (Ops.sourceFromList value)
80−#if !defined(DATA_ARRAY_PRIM) && !defined(DATA_ARRAY_PRIM_PINNED)
79+#if !defined(DATA_ARRAY_PRIM_PINNED)
8180#ifdef DATA_SMALLARRAY
8281 , let testStr =
8382 "fromListN " ++
@@ -149,9 +148,7 @@ o_1_space_transformationX4 value =
149148 ]
150149
151150moduleName :: String
152−#if defined(DATA_ARRAY_PRIM)
153−moduleName = "Data.Array.Prim"
154−#elif defined(DATA_ARRAY_PRIM_PINNED)
151+#if defined(DATA_ARRAY_PRIM_PINNED)
155152moduleName = "Data.Array.Prim.Pinned"
156153#else
157154moduleName = "Data.Array"
benchmark/Streamly/Benchmark/Data/Array/Prim.hsnew file+58
@@ -0,0 +1,58 @@
1+{-# LANGUAGE CPP #-}
2+
3+#include "Streamly/Benchmark/Data/Array/CommonImports.hs"
4+
5+import qualified Streamly.Internal.Data.Array.Prim as A
6+type Stream = A.Array
7+
8+#include "Streamly/Benchmark/Data/Array/Common.hs"
9+
10+-------------------------------------------------------------------------------
11+-- Benchmark helpers
12+-------------------------------------------------------------------------------
13+
14+-- Drain a source that generates an array in the IO monad
15+{-# INLINE benchIOSrc #-}
16+benchIOSrc :: String -> (Int -> IO (Stream a)) -> Benchmark
17+benchIOSrc name src = benchIO name src id
18+
19+-------------------------------------------------------------------------------
20+-- Bench Ops
21+-------------------------------------------------------------------------------
22+
23+{-# INLINE sourceIntFromToFromList #-}
24+sourceIntFromToFromList :: MonadIO m => Int -> Int -> m (Stream Int)
25+sourceIntFromToFromList value n = P.return $ A.fromListN value $ [n..n + value]
26+
27+-- CPP:
28+{-# INLINE sourceIntFromToFromStream #-}
29+sourceIntFromToFromStream :: MonadIO m => Int -> Int -> m (Stream Int)
30+sourceIntFromToFromStream value n = S.fold A.write $ S.enumerateFromTo n (n + value)
31+
32+-------------------------------------------------------------------------------
33+-- Bench groups
34+-------------------------------------------------------------------------------
35+
36+o_1_space_generation :: Int -> [Benchmark]
37+o_1_space_generation value =
38+ [ bgroup
39+ "generation"
40+ [ benchIOSrc "write . intFromTo" (sourceIntFromToFromStream value)
41+ ]
42+ ]
43+
44+moduleName :: String
45+moduleName = "Data.Array.Prim"
46+
47+defStreamSize :: Int
48+defStreamSize = defaultStreamSize
49+
50+main :: IO ()
51+main = runWithCLIOpts defStreamSize allBenchmarks
52+
53+ where
54+
55+ allBenchmarks size =
56+ [ bgroup (o_1_space_prefix moduleName) $
57+ o_1_space_generation size
58+ ] ++ commonBenchmarks size
benchmark/Streamly/Benchmark/Data/ArrayOps.hs+3−11
@@ -12,7 +12,6 @@
1212-- CPP:
1313-- MEMORY_ARRAY
1414-- DATA_ARRAY
15−-- DATA_ARRAY_PRIM
1615-- DATA_ARRAY_PRIM_PINNED
1716
1817module Streamly.Benchmark.Data.ArrayOps where
@@ -23,7 +22,7 @@ import Prelude (Bool, Int, Maybe(..), ($), (+), (.), (==), (>), undefined)
2322import qualified Prelude as P
2423import qualified Streamly.Prelude as S
2524
26−#if !defined(DATA_ARRAY_PRIM) && !defined(DATA_ARRAY_PRIM_PINNED)
25+#if !defined(DATA_ARRAY_PRIM_PINNED)
2726#ifdef DEVBUILD
2827{-
2928import qualified Data.Foldable as F
@@ -31,10 +30,7 @@ import qualified Data.Foldable as F
3130#endif
3231#endif
3332
34−#if defined(DATA_ARRAY_PRIM)
35−import qualified Streamly.Internal.Data.Array.Prim as A
36−type Stream = A.Array
37−#elif defined(DATA_ARRAY_PRIM_PINNED)
33+#if defined(DATA_ARRAY_PRIM_PINNED)
3834import qualified Streamly.Internal.Data.Array.Prim.Pinned as A
3935type Stream = A.Array
4036#elif defined(DATA_ARRAY)
@@ -53,7 +49,6 @@ type Stream = A.Array
5349-------------------------------------------------------------------------------
5450-- CPP Common to:
5551-- DATA_ARRAY
56−-- DATA_ARRAY_PRIM
5752-- DATA_ARRAY_PRIM_PINNED
5853-------------------------------------------------------------------------------
5954
@@ -82,7 +77,6 @@ sourceIntFromToFromList value n = P.return $ A.fromList $ [n..n + value]
8277-------------------------------------------------------------------------------
8378-- CPP Common to:
8479-- DATA_ARRAY
85−-- DATA_ARRAY_PRIM
8680-- DATA_ARRAY_PRIM_PINNED
8781-------------------------------------------------------------------------------
8882
@@ -98,7 +92,6 @@ sourceIntFromToFromStream value n = S.fold A.write $ S.enumerateFromTo n (n + va
9892-------------------------------------------------------------------------------
9993-- CPP Common to:
10094-- DATA_ARRAY
101−-- DATA_ARRAY_PRIM
10295-- DATA_ARRAY_PRIM_PINNED
10396-------------------------------------------------------------------------------
10497
@@ -163,7 +156,7 @@ pureFoldl' = S.foldl' (+) 0 . S.unfold A.read
163156-------------------------------------------------------------------------------
164157
165158-- CPP:
166−#if !defined(DATA_ARRAY_PRIM) && !defined(DATA_ARRAY_PRIM_PINNED)
159+#if !defined(DATA_ARRAY_PRIM_PINNED)
167160{-# INLINE readInstance #-}
168161readInstance :: P.String -> Stream Int
169162readInstance str =
@@ -192,7 +185,6 @@ foldableSum = P.sum
192185-------------------------------------------------------------------------------
193186-- CPP Common to:
194187-- DATA_ARRAY
195−-- DATA_ARRAY_PRIM
196188-- DATA_ARRAY_PRIM_PINNED
197189-------------------------------------------------------------------------------
198190
benchmark/streamly-benchmarks.cabal+1−4
@@ -465,10 +465,7 @@ benchmark Data.Array
465465benchmark Data.Array.Prim
466466 import: bench-options
467467 type: exitcode-stdio-1.0
468− hs-source-dirs: .
469− main-is: Streamly/Benchmark/Data/Array.hs
470− other-modules: Streamly.Benchmark.Data.ArrayOps
471− cpp-options: -DDATA_ARRAY_PRIM
468+ main-is: Streamly/Benchmark/Data/Array/Prim.hs
472469 build-depends: primitive
473470
474471benchmark Data.SmallArray
streamly.cabal+1
@@ -60,6 +60,7 @@ extra-source-files:
6060 benchmark/Streamly/Benchmark/Data/Array/CommonImports.hs
6161 benchmark/Streamly/Benchmark/Data/Array/SmallArray.hs
6262 benchmark/Streamly/Benchmark/Data/Array/Foreign.hs
63+ benchmark/Streamly/Benchmark/Data/Array/Prim.hs
6364 benchmark/Streamly/Benchmark/Data/Array/Stream/Foreign.hs
6465 benchmark/Streamly/Benchmark/Data/Parser/*.hs
6566 benchmark/Streamly/Benchmark/Data/Stream/*.hs