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

Commit cd55e15

Browse files
akharcheshssf
authored andcommitted
Performance tests on series methods in workload (#365)
* Performance tests on series methods in workload * Fix in input data * Add finite input data * Add tests
1 parent 6b9915b commit cd55e15

2 files changed

Lines changed: 43 additions & 4 deletions

File tree

sdc/tests/test_utils.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,9 @@
4343
max_float64 = np.finfo('float64').max
4444

4545
test_global_input_data_float64 = [
46+
[1., -1., 0.1, min_float64, max_float64, max_float64, min_float64, -0.1],
4647
[1., np.nan, -1., 0., min_float64, max_float64, max_float64, min_float64],
47-
[np.nan, np.inf, np.inf, np.nan, np.nan, np.nan, np.NINF, np.NZERO]
48+
[np.nan, np.inf, np.inf, np.nan, np.nan, np.nan, np.NINF, np.NZERO],
4849
]
4950

5051

sdc/tests/tests_perf/test_perf_series.py

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,35 @@ def usecase_series_chain_add_and_sum(A, B):
230230

231231
return res_time, res
232232

233-
233+
234+
def usecase_series_astype_int(input_data):
235+
# astype to int8
236+
start_time = time.time()
237+
input_data.astype(np.int8)
238+
finish_time = time.time()
239+
res_time = finish_time - start_time
240+
241+
return res_time, input_data
242+
243+
244+
def usecase_series_fillna(input_data):
245+
start_time = time.time()
246+
res = input_data.fillna(-1)
247+
finish_time = time.time()
248+
res_time = finish_time - start_time
249+
250+
return res_time, res
251+
252+
253+
def usecase_series_isna(input_data):
254+
start_time = time.time()
255+
res = input_data.isna()
256+
finish_time = time.time()
257+
res_time = finish_time - start_time
258+
259+
return res_time, res
260+
261+
234262
# python -m sdc.runtests sdc.tests.tests_perf.test_perf_series.TestSeriesMethods
235263
class TestSeriesMethods(TestBase):
236264
@classmethod
@@ -261,6 +289,9 @@ def setUpClass(cls):
261289
'series_sort_values': [10 ** 5],
262290
'series_dropna': [2 * 10 ** 8],
263291
'series_chain_add_and_sum': [20 * 10 ** 7, 25 * 10 ** 7, 30 * 10 ** 7],
292+
'series_astype_int': [2 * 10 ** 7],
293+
'series_fillna': [2 * 10 ** 7],
294+
'series_isna': [2 * 10 ** 7],
264295
}
265296

266297
def _test_jitted(self, pyfunc, record, *args, **kwargs):
@@ -280,8 +311,7 @@ def _test_python(self, pyfunc, record, *args, **kwargs):
280311
record["test_results"], _ = \
281312
get_times(pyfunc, *args, **kwargs)
282313

283-
def _test_case(self, pyfunc, name):
284-
input_data = test_global_input_data_float64
314+
def _test_case(self, pyfunc, name, input_data=test_global_input_data_float64):
285315
full_input_data_length = sum(len(i) for i in input_data)
286316
for data_length in self.total_data_length[name]:
287317
base = {
@@ -396,3 +426,11 @@ def test_series_float_dropna(self):
396426
def test_series_chain_add_and_sum(self):
397427
self._test_series_binary_operations(usecase_series_chain_add_and_sum, 'series_chain_add_and_sum')
398428

429+
def test_series_float_astype_int(self):
430+
self._test_case(usecase_series_astype_int, 'series_astype_int', input_data=[test_global_input_data_float64[0]])
431+
432+
def test_series_float_fillna(self):
433+
self._test_case(usecase_series_fillna, 'series_fillna')
434+
435+
def test_series_float_isna(self):
436+
self._test_case(usecase_series_fillna, 'series_isna')

0 commit comments

Comments
 (0)