on master help sign in
Add a nano benchmark for unfoldr, fix dev benchmarks
commita30ef3eef96b7e605d43cc9ac04272aeac20d6a7 authorHarendra Kumar <harendra.kumar@gmail.com> dateThu 27 Dec 2018, 00:52 (8 years ago) parent57fad21
5 files changed+21−4
benchmark/NanoBenchmarks.hs+13−1 benchmark/StreamDOps.hs+1−1 src/Streamly/Streams/StreamD/Type.hs+1−1 src/Streamly/Streams/StreamK/Type.hs+1−1 streamly.cabal+5
benchmark/NanoBenchmarks.hs+13−1
@@ -4,8 +4,9 @@
44-------------------------------------------------------------------------------
55
66{-# LANGUAGE ScopedTypeVariables #-}
7−import qualified Streamly.Streams.StreamD as S
7+import qualified Streamly.Streams.StreamK as S
88import Gauge
9+import System.Random
910
1011maxValue :: Int
1112maxValue = 100000
@@ -28,6 +29,15 @@ sourceUnfoldrMN n = S.unfoldrM step n
2829 then return Nothing
2930 else return (Just (cnt, cnt + 1))
3031
32+{-# INLINE sourceUnfoldr #-}
33+sourceUnfoldr :: Monad m => Int -> S.Stream m Int
34+sourceUnfoldr n = S.unfoldr step n
35+ where
36+ step cnt =
37+ if cnt > n + maxValue
38+ then Nothing
39+ else Just (cnt, cnt + 1)
40+
3141-------------------------------------------------------------------------------
3242-- take-drop composition
3343-------------------------------------------------------------------------------
@@ -75,6 +85,8 @@ iterateSource g i n = f i (sourceUnfoldrMN n)
7585-- We keep all of them enabled by default for testing the build.
7686main :: IO ()
7787main = do
88+ defaultMain [bench "unfoldr" $ nfIO $
89+ randomRIO (1,1) >>= \n -> S.runStream (sourceUnfoldr n)]
7890 defaultMain [bench "take-drop" $ nfIO $ takeDrop sourceUnfoldrM]
7991 defaultMain [bench "dropWhileFalseX4" $
8092 nfIO $ dropWhileFalseX4 sourceUnfoldrM]
benchmark/StreamDOps.hs+1−1
@@ -59,7 +59,7 @@ sourceUnfoldrM n = S.unfoldrM step n
5959
6060{-# INLINE sourceFromEnum #-}
6161sourceFromEnum :: Monad m => Int -> Stream m Int
62−sourceFromEnum n = S.enumFromStepN n 1 value
62+sourceFromEnum n = S.intFromTo n (n + value)
6363
6464{-# INLINE sourceFromList #-}
6565sourceFromList :: Monad m => Int -> Stream m Int
src/Streamly/Streams/StreamD/Type.hs+1−1
@@ -12,7 +12,7 @@
1212#include "../inline.hs"
1313
1414-- |
15−-- Module : Streamly.Streams.StreamDType
15+-- Module : Streamly.Streams.StreamD.Type
1616-- Copyright : (c) 2018 Harendra Kumar
1717--
1818-- License : BSD3
src/Streamly/Streams/StreamK/Type.hs+1−1
@@ -11,7 +11,7 @@
1111{-# LANGUAGE UndecidableInstances #-} -- XXX
1212
1313-- |
14−-- Module : Streamly.Streams.StreamKType
14+-- Module : Streamly.Streams.StreamK.Type
1515-- Copyright : (c) 2017 Harendra Kumar
1616--
1717-- License : BSD3
streamly.cabal+5
@@ -481,7 +481,9 @@ benchmark base
481481 hs-source-dirs: benchmark, src
482482 main-is: BaseStreams.hs
483483 other-modules: Streamly.SVar
484+ , Streamly.Streams.StreamK.Type
484485 , Streamly.Streams.StreamK
486+ , Streamly.Streams.StreamD.Type
485487 , Streamly.Streams.StreamD
486488 , Streamly.Streams.Prelude
487489
@@ -537,7 +539,9 @@ executable nano-bench
537539 hs-source-dirs: benchmark, src
538540 main-is: NanoBenchmarks.hs
539541 other-modules: Streamly.SVar
542+ , Streamly.Streams.StreamK.Type
540543 , Streamly.Streams.StreamK
544+ , Streamly.Streams.StreamD.Type
541545 , Streamly.Streams.StreamD
542546 default-language: Haskell2010
543547 ghc-options: -O2 -Wall
@@ -550,6 +554,7 @@ executable nano-bench
550554 , ghc-prim >= 0.2 && < 0.6
551555 , containers >= 0.5 && < 0.7
552556 , heaps >= 0.3 && < 0.4
557+ , random >= 1.0 && < 2.0
553558
554559 -- concurrency
555560 , atomic-primops >= 0.8 && < 0.9