Skip to content

Commit f6368ca

Browse files
Split Unfold benchmarks for "streamly" and "srteamly-core"
1 parent 283e149 commit f6368ca

File tree

5 files changed

+72
-29
lines changed

5 files changed

+72
-29
lines changed

benchmark/Streamly/Benchmark/Data/Unfold.hs

Lines changed: 3 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,7 @@ import qualified Prelude
3131
import qualified Streamly.FileSystem.Handle as FH
3232
import qualified Streamly.Internal.Data.Fold as FL
3333
import qualified Streamly.Internal.Data.Unfold as UF
34-
#ifndef USE_STREAMLY_CORE
35-
import qualified Streamly.Internal.Data.Unfold.Prelude as UF
36-
#endif
3734
import qualified Streamly.Internal.Data.Stream as S
38-
import qualified Streamly.Internal.Data.Stream as D
3935
import qualified Streamly.Internal.Data.StreamK as K
4036

4137
import Test.Tasty.Bench hiding (env)
@@ -175,7 +171,7 @@ fromStreamK size start = drainGeneration UF.fromStreamK (K.replicate size start)
175171
{-# INLINE fromStreamD #-}
176172
fromStreamD :: Monad m => Int -> Int -> m ()
177173
fromStreamD size start =
178-
drainGeneration UF.fromStreamD (D.replicate size start)
174+
drainGeneration UF.fromStreamD (S.replicate size start)
179175

180176
{-# INLINE _nilM #-}
181177
_nilM :: Monad m => Int -> Int -> m ()
@@ -793,14 +789,7 @@ inspect $ hasNoTypeClassesExcept 'readWriteFinally_Unfold [''MonadCatch]
793789
#else
794790
inspect $ hasNoTypeClasses 'readWriteFinally_Unfold
795791
#endif
796-
-- inspect $ 'readWriteFinallyUnfold `hasNoType` ''Step
797-
#endif
798-
799-
#ifndef USE_STREAMLY_CORE
800-
readWriteFinallyUnfold :: Handle -> Handle -> IO ()
801-
readWriteFinallyUnfold inh devNull =
802-
let readEx = UF.finally (\_ -> hClose inh) FH.reader
803-
in S.fold (FH.write devNull) $ S.unfold readEx inh
792+
-- inspect $ 'readWriteFinally_Unfold `hasNoType` ''Step
804793
#endif
805794

806795
-- | Send the file contents to /dev/null with exception handling
@@ -815,14 +804,7 @@ inspect $ hasNoTypeClassesExcept 'readWriteBracket_Unfold [''MonadCatch]
815804
#else
816805
inspect $ hasNoTypeClasses 'readWriteBracket_Unfold
817806
#endif
818-
-- inspect $ 'readWriteBracketUnfold `hasNoType` ''Step
819-
#endif
820-
821-
#ifndef USE_STREAMLY_CORE
822-
readWriteBracketUnfold :: Handle -> Handle -> IO ()
823-
readWriteBracketUnfold inh devNull =
824-
let readEx = UF.bracket return (\_ -> hClose inh) FH.reader
825-
in S.fold (FH.write devNull) $ S.unfold readEx inh
807+
-- inspect $ 'readWriteBracket_Unfold `hasNoType` ''S.Step
826808
#endif
827809

828810
o_1_space_copy_read_exceptions :: BenchEnv -> [Benchmark]
@@ -836,12 +818,6 @@ o_1_space_copy_read_exceptions env =
836818
readWriteFinally_Unfold inh (nullH env)
837819
, mkBenchSmall "UF.bracket_" env $ \inh _ ->
838820
readWriteBracket_Unfold inh (nullH env)
839-
#ifndef USE_STREAMLY_CORE
840-
, mkBenchSmall "UF.finally" env $ \inh _ ->
841-
readWriteFinallyUnfold inh (nullH env)
842-
, mkBenchSmall "UF.bracket" env $ \inh _ ->
843-
readWriteBracketUnfold inh (nullH env)
844-
#endif
845821
]
846822
]
847823

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
-- |
2+
-- Module : Streamly.Benchmark.Data.Unfold.Prelude
3+
-- Copyright : (c) 2018 Composewell
4+
-- License : MIT
5+
-- Maintainer : [email protected]
6+
7+
{-# LANGUAGE ScopedTypeVariables #-}
8+
9+
module Main (main) where
10+
11+
import System.IO (Handle, hClose)
12+
13+
import qualified Streamly.Internal.Data.Stream as S
14+
import qualified Streamly.Internal.Data.Unfold.Prelude as UF
15+
import qualified Streamly.FileSystem.Handle as FH
16+
17+
import Test.Tasty.Bench hiding (env)
18+
import Streamly.Benchmark.Common
19+
import Streamly.Benchmark.Common.Handle
20+
21+
readWriteFinallyUnfold :: Handle -> Handle -> IO ()
22+
readWriteFinallyUnfold inh devNull =
23+
let readEx = UF.finally (\_ -> hClose inh) FH.reader
24+
in S.fold (FH.write devNull) $ S.unfold readEx inh
25+
26+
readWriteBracketUnfold :: Handle -> Handle -> IO ()
27+
readWriteBracketUnfold inh devNull =
28+
let readEx = UF.bracket return (\_ -> hClose inh) FH.reader
29+
in S.fold (FH.write devNull) $ S.unfold readEx inh
30+
31+
o_1_space_copy_read_exceptions :: BenchEnv -> [Benchmark]
32+
o_1_space_copy_read_exceptions env =
33+
[ bgroup "exceptions"
34+
[ mkBenchSmall "UF.finally" env $ \inh _ ->
35+
readWriteFinallyUnfold inh (nullH env)
36+
, mkBenchSmall "UF.bracket" env $ \inh _ ->
37+
readWriteBracketUnfold inh (nullH env)
38+
]
39+
]
40+
41+
moduleName :: String
42+
moduleName = "Data.Unfold.Prelude"
43+
44+
main :: IO ()
45+
main = do
46+
env <- mkHandleBenchEnv
47+
runWithCLIOpts defaultStreamSize (allBenchmarks env)
48+
49+
where
50+
51+
allBenchmarks env _size =
52+
[ bgroup (o_1_space_prefix moduleName)
53+
$ o_1_space_copy_read_exceptions env
54+
]

benchmark/streamly-benchmarks.cabal

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,8 @@ common default-extensions
107107
common compile-options
108108
import: default-extensions
109109

110-
if flag(use-streamly-core)
111-
cpp-options: -DUSE_STREAMLY_CORE
110+
-- if flag(use-streamly-core)
111+
-- cpp-options: -DUSE_STREAMLY_CORE
112112

113113
if flag(dev)
114114
cpp-options: -DDEVBUILD
@@ -599,6 +599,16 @@ benchmark Data.Unfold
599599
else
600600
buildable: True
601601

602+
benchmark Data.Unfold.Prelude
603+
import: bench-options
604+
type: exitcode-stdio-1.0
605+
hs-source-dirs: Streamly/Benchmark/Data/Unfold
606+
main-is: Prelude1.hs
607+
if flag(use-streamly-core) || impl(ghcjs)
608+
buildable: False
609+
else
610+
buildable: True
611+
602612
benchmark FileSystem.Handle
603613
import: bench-options
604614
type: exitcode-stdio-1.0

hie.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ cradle:
7272
component: "bench:Data.Stream.Prelude.Exceptions"
7373
- path: "./benchmark/Streamly/Benchmark/Data/Unfold.hs"
7474
component: "bench:Data.Unfold"
75+
- path: "./benchmark/Streamly/Benchmark/Data/Unfold/Prelude1.hs"
76+
component: "bench:Data.Unfold.Prelude"
7577
- path: "./benchmark/Streamly/Benchmark/FileSystem/Handle/Read.hs"
7678
component: "bench:FileSystem.Handle"
7779
- path: "./benchmark/Streamly/Benchmark/FileSystem/Handle/ReadWrite.hs"

streamly.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ extra-source-files:
8585
benchmark/Streamly/Benchmark/Data/Stream/*.hs
8686
benchmark/Streamly/Benchmark/Data/Stream/Prelude/*.hs
8787
benchmark/Streamly/Benchmark/Data/StreamK/*.hs
88+
benchmark/Streamly/Benchmark/Data/Unfold/*.hs
8889
benchmark/Streamly/Benchmark/FileSystem/*.hs
8990
benchmark/Streamly/Benchmark/FileSystem/Handle/*.hs
9091
benchmark/Streamly/Benchmark/Unicode/*.hs

0 commit comments

Comments
 (0)