on master help sign in
use the same test file for all benchmarks
commit213ac6bc98e561fab35bf6a178efa9c8844d1fbf authorHarendra Kumar <harendra.kumar@gmail.com> dateSat 15 Jun 2019, 21:57 (7 years ago) parent54947ea
1 file changed+61−49
benchmark/FileIO.hs+61−49
benchmark/FileIO.hs+61−49
@@ -21,7 +21,6 @@ import qualified Streamly.Prelude as S
2121
2222#ifdef DEVBUILD
2323import Data.Char (ord, chr)
24−import System.IO (hSeek, SeekMode(..))
2524import qualified Streamly.Fold as FL
2625import qualified Streamly.String as SS
2726#endif
@@ -67,6 +66,13 @@ isSpace c
6766
6867main :: IO ()
6968main = do
69+#ifdef DEVBUILD
70+ -- This is a 500MB text file for text processing benchmarks. We cannot
71+ -- have it in the repo, therefore we use it locally with DEVBUILD
72+ -- conditional (enabled by "dev" cabal flag). Some tests that depend on
73+ -- this file are available only in DEVBUILD mode.
74+ inHandle <- openFile "benchmark/text-processing/gutenberg-500.txt" ReadMode
75+#else
7076 -- XXX will this work on windows/msys?
7177 let cmd = "mkdir -p " ++ scratchDir
7278 ++ "; test -e " ++ infile
@@ -78,16 +84,10 @@ main = do
7884
7985 runProcess_ (shell cmd)
8086 inHandle <- openFile infile ReadMode
87+#endif
8188 outHandle <- openFile outfile WriteMode
8289 href <- newIORef $ Handles inHandle outHandle
8390
84−-- This is a 500MB text file for text processing benchmarks. We cannot have it
85−-- in the repo, therefore we use it locally with DEVBUILD conditional (enabled
86−-- by "dev" cabal flag).
87−#ifdef DEVBUILD
88− inText <- openFile "benchmark/text-processing/gutenberg-500.txt" ReadMode
89−#endif
90−
9191 defaultMain
9292 [ bgroup "readArray"
9393 [ mkBench "last" href $ do
@@ -136,13 +136,13 @@ main = do
136136 ]
137137 -- This needs an ascii file, as decode just errors out.
138138 , bgroup "decode-encode"
139− [ mkBench "encodeChar8-decodeChar8" href $ do
139+ [ mkBench "char8" href $ do
140140 Handles inh outh <- readIORef href
141141 FH.write outh
142142 $ SS.encodeChar8
143143 $ SS.decodeChar8
144144 $ FH.read inh
145− , mkBench "encodeUtf8-decodeUtf8" href $ do
145+ , mkBench "utf8" href $ do
146146 Handles inh outh <- readIORef href
147147 FH.write outh
148148 $ SS.encodeUtf8
@@ -196,68 +196,85 @@ main = do
196196 toarr = A.fromList . map (fromIntegral . ord)
197197 in bgroup "splitting"
198198 [ bgroup "predicate"
199− [ mkBenchText "splitBy \\n (line count)" inText $ do
199+ [ mkBench "splitBy \\n (line count)" href $ do
200+ Handles inh _ <- readIORef href
200201 (S.length $ FL.splitBy (== lf) FL.drain
201− $ FH.read inText) >>= print
202− , mkBenchText "splitSuffixBy \\n (line count)" inText $ do
202+ $ FH.read inh) -- >>= print
203+ , mkBench "splitSuffixBy \\n (line count)" href $ do
204+ Handles inh _ <- readIORef href
203205 (S.length $ FL.splitSuffixBy (== lf) FL.drain
204− $ FH.read inText) >>= print
205− , mkBenchText "wordsBy isSpace (word count)" inText $ do
206+ $ FH.read inh) -- >>= print
207+ , mkBench "wordsBy isSpace (word count)" href $ do
208+ Handles inh _ <- readIORef href
206209 (S.length $ FL.wordsBy isSp FL.drain
207− $ FH.read inText) >>= print
210+ $ FH.read inh) -- >>= print
208211 ]
209212
210213 , bgroup "empty-pattern"
211− [ mkBenchText "splitOn \"\"" inText $ do
214+ [ mkBench "splitOn \"\"" href $ do
215+ Handles inh _ <- readIORef href
212216 (S.length $ FL.splitOn (A.fromList []) FL.drain
213− $ FH.read inText) >>= print
214− , mkBenchText "splitSuffixOn \"\"" inText $ do
217+ $ FH.read inh) -- >>= print
218+ , mkBench "splitSuffixOn \"\"" href $ do
219+ Handles inh _ <- readIORef href
215220 (S.length $ FL.splitSuffixOn (A.fromList []) FL.drain
216− $ FH.read inText) >>= print
221+ $ FH.read inh) -- >>= print
217222 ]
218223 , bgroup "short-pattern"
219− [ mkBenchText "splitOn \\n (line count)" inText $ do
224+ [ mkBench "splitOn \\n (line count)" href $ do
225+ Handles inh _ <- readIORef href
220226 (S.length $ FL.splitOn lfarr FL.drain
221− $ FH.read inText) >>= print
222− , mkBenchText "splitSuffixOn \\n (line count)" inText $ do
227+ $ FH.read inh) -- >>= print
228+ , mkBench "splitSuffixOn \\n (line count)" href $ do
229+ Handles inh _ <- readIORef href
223230 (S.length $ FL.splitSuffixOn lfarr FL.drain
224− $ FH.read inText) >>= print
225− , mkBenchText "splitOn a" inText $ do
231+ $ FH.read inh) -- >>= print
232+ , mkBench "splitOn a" href $ do
233+ Handles inh _ <- readIORef href
226234 (S.length $ FL.splitOn (toarr "a") FL.drain
227− $ FH.read inText) >>= print
228− , mkBenchText "splitOn \\r\\n" inText $ do
235+ $ FH.read inh) -- >>= print
236+ , mkBench "splitOn \\r\\n" href $ do
237+ Handles inh _ <- readIORef href
229238 (S.length $ FL.splitOn (toarr "\r\n") FL.drain
230− $ FH.read inText) >>= print
231− , mkBenchText "splitSuffixOn \\r\\n)" inText $ do
239+ $ FH.read inh) -- >>= print
240+ , mkBench "splitSuffixOn \\r\\n)" href $ do
241+ Handles inh _ <- readIORef href
232242 (S.length $ FL.splitSuffixOn (toarr "\r\n") FL.drain
233− $ FH.read inText) >>= print
234− , mkBenchText "splitOn aa" inText $ do
243+ $ FH.read inh) -- >>= print
244+ , mkBench "splitOn aa" href $ do
245+ Handles inh _ <- readIORef href
235246 (S.length $ FL.splitOn (toarr "aa") FL.drain
236− $ FH.read inText) >>= print
237− , mkBenchText "splitOn aaaa" inText $ do
247+ $ FH.read inh) -- >>= print
248+ , mkBench "splitOn aaaa" href $ do
249+ Handles inh _ <- readIORef href
238250 (S.length $ FL.splitOn (toarr "aaaa") FL.drain
239− $ FH.read inText) >>= print
240− , mkBenchText "splitOn abcdefgh" inText $ do
251+ $ FH.read inh) -- >>= print
252+ , mkBench "splitOn abcdefgh" href $ do
253+ Handles inh _ <- readIORef href
241254 (S.length $ FL.splitOn (toarr "abcdefgh") FL.drain
242− $ FH.read inText) >>= print
255+ $ FH.read inh) -- >>= print
243256 ]
244257 , bgroup "long-pattern"
245− [ mkBenchText "splitOn abcdefghi" inText $ do
258+ [ mkBench "splitOn abcdefghi" href $ do
259+ Handles inh _ <- readIORef href
246260 (S.length $ FL.splitOn (toarr "abcdefghi") FL.drain
247− $ FH.read inText) >>= print
248− , mkBenchText "splitOn catcatcatcatcat" inText $ do
261+ $ FH.read inh) -- >>= print
262+ , mkBench "splitOn catcatcatcatcat" href $ do
263+ Handles inh _ <- readIORef href
249264 (S.length $ FL.splitOn (toarr "catcatcatcatcat") FL.drain
250− $ FH.read inText) >>= print
251− , mkBenchText "splitOn abc...xyz" inText $ do
265+ $ FH.read inh) -- >>= print
266+ , mkBench "splitOn abc...xyz" href $ do
267+ Handles inh _ <- readIORef href
252268 (S.length $ FL.splitOn
253269 (toarr "abcdefghijklmnopqrstuvwxyz")
254270 FL.drain
255− $ FH.read inText) >>= print
256− , mkBenchText "splitSuffixOn abc...xyz" inText $ do
271+ $ FH.read inh) -- >>= print
272+ , mkBench "splitSuffixOn abc...xyz" href $ do
273+ Handles inh _ <- readIORef href
257274 (S.length $ FL.splitSuffixOn
258275 (toarr "abcdefghijklmnopqrstuvwxyz")
259276 FL.drain
260− $ FH.read inText) >>= print
277+ $ FH.read inh) -- >>= print
261278 ]
262279 ]
263280#endif
@@ -276,8 +293,3 @@ main = do
276293 writeIORef ref (Handles inHandle outHandle)
277294 )
278295 (\_ -> action)
279−
280−#ifdef DEVBUILD
281− mkBenchText name h action =
282− bench name $ perRunEnv (hSeek h AbsoluteSeek 0) (\_ -> action)
283−#endif