on master help sign in
Rename array benchmarks and prefixes by module names
commitf72d007c515e143eaec65d0bff663bfd7fe55d9d authorHarendra Kumar <harendra@composewell.com> dateTue 2 Jun 2020, 21:11 (6 years ago) parent1c57096
6 files changed+59−47
bench.sh+5−4 benchmark/Streamly/Benchmark/Data/Array.hs+13−7 benchmark/Streamly/Benchmark/Data/Prim/Array.hs+13−7 benchmark/Streamly/Benchmark/Data/SmallArray.hs+10−4 benchmark/Streamly/Benchmark/Memory/Array.hs+13−12 benchmark/streamly-benchmarks.cabal+5−13
bench.sh+5−4
@@ -15,7 +15,7 @@ SERIAL_BENCHMARKS="\
1515# parallel benchmark-suite is separated because we run it with a higher
1616# heap size limit.
1717CONCURRENT_BENCHMARKS="linear-async linear-rate nested-concurrent parallel concurrent adaptive"
18−ARRAY_BENCHMARKS="array unpinned-array prim-array small-array"
18+ARRAY_BENCHMARKS="Memory.Array Data.Array Data.Prim.Array Data.SmallArray"
1919
2020# XXX We can include SERIAL_O_1 here once "base" also supports --stream-size
2121INFINITE_BENCHMARKS="linear linear-async linear-rate nested-concurrent"
@@ -39,6 +39,7 @@ bench_rts_opts () {
3939 "serial-o-n-stack") echo -n "-T -K1M -M16M" ;;
4040 "serial-o-n-heap") echo -n "-T -K36K -M128M" ;;
4141 "serial-o-n-space") echo -n "-T -K16M -M64M" ;;
42+ Data.SmallArray/o-1-sp*) echo -n "-T -K128K -M16M" ;;
4243 */o-1-sp*) echo -n "-T -K36K -M16M" ;;
4344 */o-n-h*) echo -n "-T -K36K -M32M" ;;
4445 */o-n-st*) echo -n "-T -K1M -M16M" ;;
@@ -520,9 +521,9 @@ if test "$(has_benchmark 'array-cmp')" = "array-cmp"
520521then
521522 VIRTUAL_REPORTS="$VIRTUAL_REPORTS array-cmp"
522523 mkdir -p "charts/array-cmp"
523− cat "charts/array/results.csv" \
524− "charts/prim-array/results.csv" \
525− "charts/unpinned-array/results.csv" > "charts/array-cmp/results.csv"
524+ cat "charts/Memory.Array/results.csv" \
525+ "charts/Data.Prim.Array/results.csv" \
526+ "charts/Data.Array/results.csv" > "charts/array-cmp/results.csv"
526527fi
527528
528529if test "$RAW" = "0"
benchmark/Streamly/Benchmark/Data/Array.hs+13−7
@@ -18,6 +18,7 @@ import qualified Streamly.Benchmark.Data.ArrayOps as Ops
1818import qualified Streamly.Internal.Data.Array as A
1919import qualified Streamly.Prelude as S
2020
21+import Streamly.Benchmark.Common
2122import Gauge
2223
2324-------------------------------------------------------------------------------
@@ -48,13 +49,15 @@ benchIO' name src f = bench name $ nfIO $
4849benchIOSink :: NFData b => String -> (Ops.Stream Int -> IO b) -> Benchmark
4950benchIOSink name f = benchIO' name Ops.sourceIntFromTo f
5051
51−mkString :: String
52−mkString = "[1" ++ concat (replicate Ops.value ",1") ++ "]"
52+testStr :: String
53+testStr = mkListString Ops.value
5354
54−main :: IO ()
55−main =
56− defaultMain
57− [ bgroup "Data.Array"
55+moduleName :: String
56+moduleName = "Data.Array"
57+
58+o_1_space :: [Benchmark]
59+o_1_space =
60+ [ bgroup (o_1_space_prefix moduleName)
5861 [ bgroup "generation"
5962 [ benchIOSrc "writeN . intFromTo" Ops.sourceIntFromTo
6063 , benchIOSrc "write . intFromTo" Ops.sourceIntFromToFromStream
@@ -63,7 +66,7 @@ main =
6366 , benchIOSrc "writeN . fromList" Ops.sourceFromList
6467 -- , benchPureSrc "writeN . IsList.fromList" Ops.sourceIsList
6568 -- , benchPureSrc "writeN . IsString.fromString" Ops.sourceIsString
66− , mkString `deepseq` (bench "read" $ nf Ops.readInstance mkString)
69+ , testStr `deepseq` (bench "read" $ nf Ops.readInstance testStr)
6770 , benchPureSink "show" Ops.showInstance
6871 ]
6972 , bgroup "elimination"
@@ -94,3 +97,6 @@ main =
9497 ]
9598 ]
9699 ]
100+
101+main :: IO ()
102+main = defaultMain $ concat [o_1_space]
benchmark/Streamly/Benchmark/Data/Prim/Array.hs+13−7
@@ -18,6 +18,7 @@ import qualified Streamly.Benchmark.Data.Prim.ArrayOps as Ops
1818import qualified Streamly.Internal.Data.Prim.Array as A
1919import qualified Streamly.Prelude as S
2020
21+import Streamly.Benchmark.Common
2122import Gauge
2223
2324-------------------------------------------------------------------------------
@@ -48,14 +49,16 @@ benchIOSink :: NFData b => String -> (Ops.Stream Int -> IO b) -> Benchmark
4849benchIOSink name f = benchIO' name Ops.sourceIntFromTo f
4950
5051{-
51−mkString :: String
52−mkString = "[1" ++ concat (replicate Ops.value ",1") ++ "]"
52+testStr :: String
53+testStr = mkListString Ops.value
5354-}
5455
55−main :: IO ()
56−main =
57− defaultMain
58− [ bgroup "Data.Prim.Array"
56+moduleName :: String
57+moduleName = "Data.Prim.Array"
58+
59+o_1_space :: [Benchmark]
60+o_1_space =
61+ [ bgroup (o_1_space_prefix moduleName)
5962 [ bgroup "generation"
6063 [ benchIOSrc "writeN . intFromTo" Ops.sourceIntFromTo
6164 , benchIOSrc "write . intFromTo" Ops.sourceIntFromToFromStream
@@ -64,7 +67,7 @@ main =
6467 , benchIOSrc "writeN . fromList" Ops.sourceFromList
6568 -- , benchPureSrc "writeN . IsList.fromList" Ops.sourceIsList
6669 -- , benchPureSrc "writeN . IsString.fromString" Ops.sourceIsString
67− -- , mkString `deepseq` (bench "read" $ nf Ops.readInstance mkString)
70+ -- , testStr `deepseq` (bench "read" $ nf Ops.readInstance testStr)
6871 , benchPureSink "show" Ops.showInstance
6972 ]
7073 , bgroup "elimination"
@@ -98,3 +101,6 @@ main =
98101 ]
99102 ]
100103 ]
104+
105+main :: IO ()
106+main = defaultMain $ concat [o_1_space]
benchmark/Streamly/Benchmark/Data/SmallArray.hs+10−4
@@ -18,6 +18,7 @@ import qualified Streamly.Benchmark.Data.SmallArrayOps as Ops
1818import qualified Streamly.Internal.Data.SmallArray as A
1919import qualified Streamly.Prelude as S
2020
21+import Streamly.Benchmark.Common hiding (mkString)
2122import Gauge
2223
2324-------------------------------------------------------------------------------
@@ -53,10 +54,12 @@ mkString =
5354 "fromListN " ++
5455 show (Ops.value + 1) ++ " [1" ++ concat (replicate Ops.value ",1") ++ "]"
5556
56−main :: IO ()
57−main =
58− defaultMain
59− [ bgroup "SmallArray"
57+moduleName :: String
58+moduleName = "Data.SmallArray"
59+
60+o_1_space :: [Benchmark]
61+o_1_space =
62+ [ bgroup (o_1_space_prefix moduleName)
6063 [ bgroup "generation"
6164 [ benchIOSrc "writeN . intFromTo" Ops.sourceIntFromTo
6265 , benchIOSrc "fromList . intFromTo" Ops.sourceIntFromToFromList
@@ -93,3 +96,6 @@ main =
9396 ]
9497 ]
9598 ]
99+
100+main :: IO ()
101+main = defaultMain $ concat [o_1_space]
benchmark/Streamly/Benchmark/Memory/Array.hs+13−12
@@ -17,17 +17,13 @@ import qualified Streamly.Internal.Memory.Array as IA
1717import qualified Streamly.Memory.Array as A
1818import qualified Streamly.Prelude as S
1919
20+import Streamly.Benchmark.Common hiding (benchPureSrc)
2021import Gauge
2122
2223-------------------------------------------------------------------------------
2324--
2425-------------------------------------------------------------------------------
2526
26−{-# INLINE benchPure #-}
27−benchPure :: NFData b => String -> (Int -> a) -> (a -> b) -> Benchmark
28−benchPure name src f = bench name $ nfIO $
29− randomRIO (1,1) >>= return . f . src
30−
3127-- Drain a source that generates a pure array
3228{-# INLINE benchPureSrc #-}
3329benchPureSrc :: (NFData a, Storable a)
@@ -58,13 +54,15 @@ benchIO' name src f = bench name $ nfIO $
5854benchIOSink :: NFData b => String -> (Ops.Stream Int -> IO b) -> Benchmark
5955benchIOSink name f = benchIO' name Ops.sourceIntFromTo f
6056
61−mkString :: String
62−mkString = "[1" ++ concat (replicate Ops.value ",1") ++ "]"
57+testStr :: String
58+testStr = mkListString Ops.value
6359
64−main :: IO ()
65−main =
66− defaultMain
67− [ bgroup "array"
60+moduleName :: String
61+moduleName = "Memory.Array"
62+
63+o_1_space :: [Benchmark]
64+o_1_space =
65+ [ bgroup (o_1_space_prefix moduleName)
6866 [ bgroup "generation"
6967 [ benchIOSrc "writeN . intFromTo" Ops.sourceIntFromTo
7068 , benchIOSrc "write . intFromTo" Ops.sourceIntFromToFromStream
@@ -73,7 +71,7 @@ main =
7371 , benchIOSrc "writeN . fromList" Ops.sourceFromList
7472 , benchPureSrc "writeN . IsList.fromList" Ops.sourceIsList
7573 , benchPureSrc "writeN . IsString.fromString" Ops.sourceIsString
76− , mkString `deepseq` (bench "read" $ nf Ops.readInstance mkString)
74+ , testStr `deepseq` (bench "read" $ nf Ops.readInstance testStr)
7775 , benchPureSink "show" Ops.showInstance
7876 ]
7977 , bgroup "elimination"
@@ -249,3 +247,6 @@ main =
249247 -}
250248 ]
251249 ]
250+
251+main :: IO ()
252+main = defaultMain $ concat [o_1_space]
benchmark/streamly-benchmarks.cabal+5−13
@@ -160,6 +160,7 @@ library lib-prelude
160160
161161common bench-options
162162 import: compile-options, optimization-options, bench-depends
163+ ghc-options: -rtsopts
163164 build-depends: streamly-benchmarks
164165
165166-- Some benchmarks are threaded some are not
@@ -181,7 +182,6 @@ common bench-options-threaded
181182benchmark serial
182183 import: bench-options
183184 type: exitcode-stdio-1.0
184− ghc-options: -rtsopts
185185 hs-source-dirs: Streamly/Benchmark/Prelude
186186 main-is: Serial.hs
187187 if impl(ghcjs)
@@ -204,7 +204,6 @@ benchmark fold
204204benchmark unfold
205205 import: bench-options
206206 type: exitcode-stdio-1.0
207− ghc-options: -rtsopts
208207 hs-source-dirs: ., Streamly/Benchmark/Data
209208 main-is: Unfold.hs
210209 other-modules: Streamly.Benchmark.Data.NestedUnfoldOps
@@ -256,7 +255,6 @@ benchmark parser
256255benchmark Data.Stream.StreamD
257256 import: bench-options
258257 type: exitcode-stdio-1.0
259− ghc-options: -rtsopts
260258 hs-source-dirs: Streamly/Benchmark/Data/Stream
261259 main-is: StreamD.hs
262260 if impl(ghcjs)
@@ -267,7 +265,6 @@ benchmark Data.Stream.StreamD
267265benchmark Data.Stream.StreamK
268266 import: bench-options
269267 type: exitcode-stdio-1.0
270− ghc-options: -rtsopts
271268 hs-source-dirs: Streamly/Benchmark/Data/Stream
272269 main-is: StreamK.hs
273270 if impl(ghcjs)
@@ -278,7 +275,6 @@ benchmark Data.Stream.StreamK
278275benchmark Data.Stream.StreamDK
279276 import: bench-options
280277 type: exitcode-stdio-1.0
281− ghc-options: -rtsopts
282278 hs-source-dirs: Streamly/Benchmark/Data/Stream
283279 main-is: StreamDK.hs
284280 if impl(ghcjs)
@@ -364,34 +360,30 @@ benchmark linear-rate
364360-- Array Benchmarks
365361-------------------------------------------------------------------------------
366362
367−benchmark unpinned-array
363+benchmark Data.Array
368364 import: bench-options
369365 type: exitcode-stdio-1.0
370− ghc-options: -with-rtsopts "-T -K1K -M128M"
371366 hs-source-dirs: .
372367 main-is: Streamly/Benchmark/Data/Array.hs
373368 other-modules: Streamly.Benchmark.Data.ArrayOps
374369
375−benchmark prim-array
370+benchmark Data.Prim.Array
376371 import: bench-options
377372 type: exitcode-stdio-1.0
378− ghc-options: -with-rtsopts "-T -K64K -M32M"
379373 hs-source-dirs: .
380374 main-is: Streamly/Benchmark/Data/Prim/Array.hs
381375 other-modules: Streamly.Benchmark.Data.Prim.ArrayOps
382376
383−benchmark small-array
377+benchmark Data.SmallArray
384378 import: bench-options
385379 type: exitcode-stdio-1.0
386− ghc-options: -with-rtsopts "-T -K128K -M16M"
387380 hs-source-dirs: .
388381 main-is: Streamly/Benchmark/Data/SmallArray.hs
389382 other-modules: Streamly.Benchmark.Data.SmallArrayOps
390383
391−benchmark array
384+benchmark Memory.Array
392385 import: bench-options
393386 type: exitcode-stdio-1.0
394− ghc-options: -with-rtsopts "-T -K64K -M128M"
395387 hs-source-dirs: .
396388 main-is: Streamly/Benchmark/Memory/Array.hs
397389 other-modules: Streamly.Benchmark.Memory.ArrayOps