Skip to content
This repository was archived by the owner on Feb 2, 2024. It is now read-only.

Commit 81fec58

Browse files
Rubtsowashssf
authored andcommitted
add perf tests (#329)
* add perf tests * add copy * change
1 parent 9714c78 commit 81fec58

1 file changed

Lines changed: 262 additions & 7 deletions

File tree

sdc/tests/tests_perf/test_perf_series.py

Lines changed: 262 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import pandas as pd
2828

2929
from 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 *
3131
from 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
51219
class 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

Comments
 (0)