2727import pandas as pd
2828
2929from sdc .tests .test_utils import *
30- from sdc .tests .tests_perf .test_perf_base import TestBase
30+ from sdc .tests .tests_perf .test_perf_base import *
3131from sdc .tests .tests_perf .test_perf_utils import *
3232
3333
@@ -47,18 +47,210 @@ def usecase_series_max(input_data):
4747 return finish_time - start_time , res
4848
4949
50+ def usecase_series_abs (input_data ):
51+ start_time = time .time ()
52+ res = input_data .abs ()
53+ finish_time = time .time ()
54+
55+ return finish_time - start_time , res
56+
57+
58+ def usecase_series_value_counts (input_data ):
59+ start_time = time .time ()
60+ res = input_data .value_counts ()
61+ finish_time = time .time ()
62+
63+ return finish_time - start_time , res
64+
65+
66+ def usecase_series_nsmallest (input_data ):
67+ start_time = time .time ()
68+ res = input_data .nsmallest ()
69+ finish_time = time .time ()
70+
71+ return finish_time - start_time , res
72+
73+
74+ def usecase_series_nlargest (input_data ):
75+ start_time = time .time ()
76+ res = input_data .nlargest ()
77+ finish_time = time .time ()
78+
79+ return finish_time - start_time , res
80+
81+
82+ def usecase_series_var (input_data ):
83+ start_time = time .time ()
84+ res = input_data .var ()
85+ finish_time = time .time ()
86+
87+ return finish_time - start_time , res
88+
89+
90+ def usecase_series_shift (input_data ):
91+ start_time = time .time ()
92+ res = input_data .shift ()
93+ finish_time = time .time ()
94+
95+ return finish_time - start_time , res
96+
97+
98+ def usecase_series_copy (input_data ):
99+ start_time = time .time ()
100+ res = input_data .copy ()
101+ finish_time = time .time ()
102+
103+ return finish_time - start_time , res
104+
105+
106+ def usecase_series_sum (input_data ):
107+ start_time = time .time ()
108+ res = input_data .sum ()
109+ finish_time = time .time ()
110+
111+ return finish_time - start_time , res
112+
113+
114+ def usecase_series_idxmax (input_data ):
115+ start_time = time .time ()
116+ res = input_data .idxmax ()
117+ finish_time = time .time ()
118+
119+ return finish_time - start_time , res
120+
121+
122+ def usecase_series_idxmin (input_data ):
123+ start_time = time .time ()
124+ res = input_data .idxmin ()
125+ finish_time = time .time ()
126+
127+ return finish_time - start_time , res
128+
129+
130+ def usecase_series_prod (input_data ):
131+ start_time = time .time ()
132+ res = input_data .prod ()
133+ finish_time = time .time ()
134+
135+ return finish_time - start_time , res
136+
137+
138+ def usecase_series_quantile (input_data ):
139+ start_time = time .time ()
140+ res = input_data .quantile ()
141+ finish_time = time .time ()
142+
143+ return finish_time - start_time , res
144+
145+
146+ def usecase_series_mean (input_data ):
147+ start_time = time .time ()
148+ res = input_data .mean ()
149+ finish_time = time .time ()
150+
151+ return finish_time - start_time , res
152+
153+
154+ def usecase_series_unique (input_data ):
155+ start_time = time .time ()
156+ res = input_data .unique ()
157+ finish_time = time .time ()
158+
159+ return finish_time - start_time , res
160+
161+
162+ def usecase_series_cumsum (input_data ):
163+ start_time = time .time ()
164+ res = input_data .cumsum ()
165+ finish_time = time .time ()
166+
167+ return finish_time - start_time , res
168+
169+
170+ def usecase_series_nunique (input_data ):
171+ start_time = time .time ()
172+ res = input_data .nunique ()
173+ finish_time = time .time ()
174+
175+ return finish_time - start_time , res
176+
177+
178+ def usecase_series_count (input_data ):
179+ start_time = time .time ()
180+ res = input_data .count ()
181+ finish_time = time .time ()
182+
183+ return finish_time - start_time , res
184+
185+
186+ def usecase_series_median (input_data ):
187+ start_time = time .time ()
188+ res = input_data .median ()
189+ finish_time = time .time ()
190+
191+ return finish_time - start_time , res
192+
193+
194+ def usecase_series_argsort (input_data ):
195+ start_time = time .time ()
196+ res = input_data .argsort ()
197+ finish_time = time .time ()
198+
199+ return finish_time - start_time , res
200+
201+
202+ def usecase_series_sort_values (input_data ):
203+ start_time = time .time ()
204+ res = input_data .sort_values ()
205+ finish_time = time .time ()
206+
207+ return finish_time - start_time , res
208+
209+
210+ def usecase_series_dropna (input_data ):
211+ start_time = time .time ()
212+ res = input_data .dropna ()
213+ finish_time = time .time ()
214+
215+ return finish_time - start_time , res
216+
217+
50218# python -m sdc.runtests sdc.tests.tests_perf.test_perf_series.TestSeriesMethods
51219class TestSeriesMethods (TestBase ):
52220 @classmethod
53221 def setUpClass (cls ):
54222 super ().setUpClass ()
55- cls .total_data_length = [5 * 10 ** 8 ]
223+ cls .total_data_length = {
224+ 'series_min' : [10 ** 9 ],
225+ 'series_max' : [10 ** 9 ],
226+ 'series_abs' : [3 * 10 ** 8 ],
227+ 'series_value_counts' : [3 * 10 ** 5 ],
228+ 'series_nsmallest' : [10 ** 9 ],
229+ 'series_nlargest' : [10 ** 9 ],
230+ 'series_var' : [5 * 10 ** 8 ],
231+ 'series_shift' : [5 * 10 ** 8 ],
232+ 'series_copy' : [10 ** 8 ],
233+ 'series_sum' : [10 ** 9 ],
234+ 'series_idxmax' : [10 ** 9 ],
235+ 'series_idxmin' : [10 ** 9 ],
236+ 'series_prod' : [5 * 10 ** 8 ],
237+ 'series_quantile' : [10 ** 8 ],
238+ 'series_mean' : [10 ** 8 ],
239+ 'series_unique' : [10 ** 5 ],
240+ 'series_cumsum' : [2 * 10 ** 8 ],
241+ 'series_nunique' : [10 ** 5 ],
242+ 'series_count' : [2 * 10 ** 9 ],
243+ 'series_median' : [10 ** 8 ],
244+ 'series_argsort' : [10 ** 5 ],
245+ 'series_sort_values' : [10 ** 5 ],
246+ 'series_dropna' : [2 * 10 ** 8 ]
247+ }
56248
57- def _test_series (self , pyfunc , name ):
58- input_data = test_global_input_data_float64
249+ def _test_series (self , pyfunc , name , input_data = None ):
250+ input_data = input_data or test_global_input_data_float64
59251 full_input_data_length = sum (len (i ) for i in input_data )
60252 hpat_func = sdc .jit (pyfunc )
61- for data_length in self .total_data_length :
253+ for data_length in self .total_data_length [ name ] :
62254 data = perf_data_gen_fixed_len (input_data , full_input_data_length , data_length )
63255 test_data = pd .Series (data )
64256
@@ -74,7 +266,70 @@ def _test_series(self, pyfunc, name):
74266 self .test_results .add (name , 'Reference' , test_data .size , test_results = exec_times )
75267
76268 def test_series_float_min (self ):
77- self ._test_series (usecase_series_min , 'series_float_min ' )
269+ self ._test_series (usecase_series_min , 'series_min ' )
78270
79271 def test_series_float_max (self ):
80- self ._test_series (usecase_series_max , 'series_float_max' )
272+ self ._test_series (usecase_series_max , 'series_max' )
273+
274+ def test_series_float_abs (self ):
275+ self ._test_series (usecase_series_abs , 'series_abs' )
276+
277+ def test_series_float_value_counts (self ):
278+ self ._test_series (usecase_series_value_counts , 'series_value_counts' )
279+
280+ def test_series_float_nsmallest (self ):
281+ self ._test_series (usecase_series_nsmallest , 'series_nsmallest' )
282+
283+ def test_series_float_nlargest (self ):
284+ self ._test_series (usecase_series_nlargest , 'series_nlargest' )
285+
286+ def test_series_float_var (self ):
287+ self ._test_series (usecase_series_var , 'series_var' )
288+
289+ def test_series_float_shift (self ):
290+ self ._test_series (usecase_series_shift , 'series_shift' )
291+
292+ def test_series_float_copy (self ):
293+ self ._test_series (usecase_series_shift , 'series_copy' )
294+
295+ def test_series_float_sum (self ):
296+ self ._test_series (usecase_series_sum , 'series_sum' )
297+
298+ def test_series_float_idxmax (self ):
299+ self ._test_series (usecase_series_idxmax , 'series_idxmax' )
300+
301+ def test_series_float_idxmin (self ):
302+ self ._test_series (usecase_series_idxmin , 'series_idxmin' )
303+
304+ def test_series_float_prod (self ):
305+ self ._test_series (usecase_series_prod , 'series_prod' )
306+
307+ def test_series_float_quantile (self ):
308+ self ._test_series (usecase_series_quantile , 'series_quantile' )
309+
310+ def test_series_float_mean (self ):
311+ self ._test_series (usecase_series_quantile , 'series_mean' )
312+
313+ def test_series_float_unique (self ):
314+ self ._test_series (usecase_series_unique , 'series_unique' )
315+
316+ def test_series_float_cumsum (self ):
317+ self ._test_series (usecase_series_cumsum , 'series_cumsum' )
318+
319+ def test_series_float_nunique (self ):
320+ self ._test_series (usecase_series_nunique , 'series_nunique' )
321+
322+ def test_series_float_count (self ):
323+ self ._test_series (usecase_series_count , 'series_count' )
324+
325+ def test_series_float_median (self ):
326+ self ._test_series (usecase_series_median , 'series_median' )
327+
328+ def test_series_float_argsort (self ):
329+ self ._test_series (usecase_series_argsort , 'series_argsort' )
330+
331+ def test_series_float_sort_values (self ):
332+ self ._test_series (usecase_series_sort_values , 'series_sort_values' )
333+
334+ def test_series_float_dropna (self ):
335+ self ._test_series (usecase_series_dropna , 'series_dropna' )
0 commit comments