@@ -8,8 +8,8 @@ import Streamly.Internal.Data.Stream (Stream)
8import System.Random (randomRIO)
8import System.Random (randomRIO)
10import qualified Streamly.Data.Fold as Fold
10import qualified Streamly.Data.Fold as Fold
11+import qualified Streamly.Internal.Data.Fold as Window
11import qualified Streamly.Internal.Data.Ring as Ring
12import qualified Streamly.Internal.Data.Ring as Ring
12−import qualified Streamly.Internal.Data.Fold.Window as Window
13import qualified Streamly.Internal.Data.Stream as Stream
13import qualified Streamly.Internal.Data.Stream as Stream
15import Streamly.Benchmark.Common
15import Streamly.Benchmark.Common
@@ -70,55 +70,55 @@ o_1_space_folds :: Int -> [Benchmark]
70o_1_space_folds numElements =
70o_1_space_folds numElements =
71 [ bgroup "fold"
71 [ bgroup "fold"
72 [ benchWithFold numElements "minimum (window size 100)"
72 [ benchWithFold numElements "minimum (window size 100)"
73− (Window.minimum 100)
73+ (Window.windowMinimum 100)
74 , benchWithFold numElements "minimum (window size 1000)"
74 , benchWithFold numElements "minimum (window size 1000)"
75− (Window.minimum 1000)
75+ (Window.windowMinimum 1000)
76 , benchWith sourceDescendingInt numElements
76 , benchWith sourceDescendingInt numElements
77 "minimum descending (window size 1000)"
77 "minimum descending (window size 1000)"
78− (Window.minimum 1000)
78+ (Window.windowMinimum 1000)
80 , benchWithFold numElements "maximum (window size 100)"
80 , benchWithFold numElements "maximum (window size 100)"
81− (Window.maximum 100)
81+ (Window.windowMaximum 100)
82 , benchWithFold numElements "maximum (window size 1000)"
82 , benchWithFold numElements "maximum (window size 1000)"
83− (Window.maximum 1000)
83+ (Window.windowMaximum 1000)
84 , benchWith sourceDescendingInt numElements
84 , benchWith sourceDescendingInt numElements
85 "maximum descending (window size 1000)"
85 "maximum descending (window size 1000)"
86− (Window.maximum 1000)
86+ (Window.windowMaximum 1000)
88 , benchWithFold numElements "range (window size 100)"
88 , benchWithFold numElements "range (window size 100)"
89− (Window.range 100)
89+ (Window.windowRange 100)
90 , benchWithFold numElements "range (window size 1000)"
90 , benchWithFold numElements "range (window size 1000)"
91− (Window.range 1000)
91+ (Window.windowRange 1000)
92 , benchWith sourceDescendingInt numElements
92 , benchWith sourceDescendingInt numElements
93 "range descending (window size 1000)"
93 "range descending (window size 1000)"
94− (Window.range 1000)
94+ (Window.windowRange 1000)
96 , benchWithFoldInt numElements "sumInt (window size 100)"
96 , benchWithFoldInt numElements "sumInt (window size 100)"
97− (Ring.slidingWindow 100 Window.sumInt)
97+ (Ring.slidingWindow 100 Window.windowSumInt)
98 , benchWithFoldInt numElements "sum for Int (window size 100)"
98 , benchWithFoldInt numElements "sum for Int (window size 100)"
99− (Ring.slidingWindow 100 Window.sum)
99+ (Ring.slidingWindow 100 Window.windowSum)
100 , benchWithFold numElements "sum (window size 100)"
100 , benchWithFold numElements "sum (window size 100)"
101− (Ring.slidingWindow 100 Window.sum)
101+ (Ring.slidingWindow 100 Window.windowSum)
102 , benchWithFold numElements "sum (window size 1000)"
102 , benchWithFold numElements "sum (window size 1000)"
103− (Ring.slidingWindow 1000 Window.sum)
103+ (Ring.slidingWindow 1000 Window.windowSum)
104 , benchWithFold numElements "sum (entire stream)"
104 , benchWithFold numElements "sum (entire stream)"
105− (Window.cumulative Window.sum)
105+ (Window.cumulative Window.windowSum)
106 , benchWithFold numElements "sum (Data.Fold)"
106 , benchWithFold numElements "sum (Data.Fold)"
109 , benchWithFold numElements "mean (window size 100)"
109 , benchWithFold numElements "mean (window size 100)"
110− (Ring.slidingWindow 100 Window.mean)
110+ (Ring.slidingWindow 100 Window.windowMean)
111 , benchWithFold numElements "mean (window size 1000)"
111 , benchWithFold numElements "mean (window size 1000)"
112− (Ring.slidingWindow 1000 Window.mean)
112+ (Ring.slidingWindow 1000 Window.windowMean)
113 , benchWithFold numElements "mean (entire stream)"
113 , benchWithFold numElements "mean (entire stream)"
114− (Window.cumulative Window.mean)
114+ (Window.cumulative Window.windowMean)
115 , benchWithFold numElements "mean (Data.Fold)"
115 , benchWithFold numElements "mean (Data.Fold)"
116 Fold.mean
116 Fold.mean
118 , benchWithFold numElements "powerSum 2 (window size 100)"
118 , benchWithFold numElements "powerSum 2 (window size 100)"
119− (Ring.slidingWindow 100 (Window.powerSum 2))
119+ (Ring.slidingWindow 100 (Window.windowPowerSum 2))
120 , benchWithFold numElements "powerSum 2 (entire stream)"
120 , benchWithFold numElements "powerSum 2 (entire stream)"
121− (Window.cumulative (Window.powerSum 2))
121+ (Window.cumulative (Window.windowPowerSum 2))
@@ -127,51 +127,51 @@ o_1_space_scans :: Int -> [Benchmark]
127o_1_space_scans numElements =
127o_1_space_scans numElements =
128 [ bgroup "scan"
128 [ bgroup "scan"
129 [ benchWithPostscan numElements "minimum (window size 10)"
129 [ benchWithPostscan numElements "minimum (window size 10)"
130− (Window.minimum 10)
130+ (Window.windowMinimum 10)
131 -- Below window size 30 the linear search based impl performs better
131 -- Below window size 30 the linear search based impl performs better
132 -- than the dequeue based implementation.
132 -- than the dequeue based implementation.
133 , benchWithPostscan numElements "minimum (window size 30)"
133 , benchWithPostscan numElements "minimum (window size 30)"
134− (Window.minimum 30)
134+ (Window.windowMinimum 30)
135 , benchWithPostscan numElements "minimum (window size 1000)"
135 , benchWithPostscan numElements "minimum (window size 1000)"
136− (Window.minimum 1000)
136+ (Window.windowMinimum 1000)
137 , benchScanWith sourceDescendingInt numElements
137 , benchScanWith sourceDescendingInt numElements
138 "minimum descending (window size 1000)"
138 "minimum descending (window size 1000)"
139− (Window.minimum 1000)
139+ (Window.windowMinimum 1000)
141 , benchWithPostscan numElements "maximum (window size 10)"
141 , benchWithPostscan numElements "maximum (window size 10)"
142− (Window.maximum 10)
142+ (Window.windowMaximum 10)
143 , benchWithPostscan numElements "maximum (window size 30)"
143 , benchWithPostscan numElements "maximum (window size 30)"
144− (Window.maximum 30)
144+ (Window.windowMaximum 30)
145 , benchWithPostscan numElements "maximum (window size 1000)"
145 , benchWithPostscan numElements "maximum (window size 1000)"
146− (Window.maximum 1000)
146+ (Window.windowMaximum 1000)
147 , benchScanWith sourceDescendingInt numElements
147 , benchScanWith sourceDescendingInt numElements
148 "maximum descending (window size 1000)"
148 "maximum descending (window size 1000)"
149− (Window.maximum 1000)
149+ (Window.windowMaximum 1000)
151 , benchWithPostscan numElements "range (window size 10)"
151 , benchWithPostscan numElements "range (window size 10)"
152− (Window.range 10)
152+ (Window.windowRange 10)
153 , benchWithPostscan numElements "range (window size 30)"
153 , benchWithPostscan numElements "range (window size 30)"
154− (Window.range 30)
154+ (Window.windowRange 30)
155 , benchWithPostscan numElements "range (window size 1000)"
155 , benchWithPostscan numElements "range (window size 1000)"
156− (Window.range 1000)
156+ (Window.windowRange 1000)
157 , benchScanWith sourceDescendingInt numElements
157 , benchScanWith sourceDescendingInt numElements
158 "range descending (window size 1000)"
158 "range descending (window size 1000)"
159− (Window.range 1000)
159+ (Window.windowRange 1000)
161 , benchWithPostscan numElements "sum (window size 100)"
161 , benchWithPostscan numElements "sum (window size 100)"
162− (Ring.slidingWindow 100 Window.sum)
162+ (Ring.slidingWindow 100 Window.windowSum)
163 , benchWithPostscan numElements "sum (window size 1000)"
163 , benchWithPostscan numElements "sum (window size 1000)"
164− (Ring.slidingWindow 1000 Window.sum)
164+ (Ring.slidingWindow 1000 Window.windowSum)
166 , benchWithPostscan numElements "mean (window size 100)"
166 , benchWithPostscan numElements "mean (window size 100)"
167− (Ring.slidingWindow 100 Window.mean)
167+ (Ring.slidingWindow 100 Window.windowMean)
168 , benchWithPostscan numElements "mean (window size 1000)"
168 , benchWithPostscan numElements "mean (window size 1000)"
169− (Ring.slidingWindow 1000 Window.mean)
169+ (Ring.slidingWindow 1000 Window.windowMean)
171 , benchWithPostscan numElements "powerSum 2 (window size 100)"
171 , benchWithPostscan numElements "powerSum 2 (window size 100)"
172− (Ring.slidingWindow 100 (Window.powerSum 2))
172+ (Ring.slidingWindow 100 (Window.windowPowerSum 2))
173 , benchWithPostscan numElements "powerSum 2 (window size 1000)"
173 , benchWithPostscan numElements "powerSum 2 (window size 1000)"
174− (Ring.slidingWindow 1000 (Window.powerSum 2))
174+ (Ring.slidingWindow 1000 (Window.windowPowerSum 2))