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

Commit e008d2f

Browse files
committed
Some minor fixes in perf.testing
1 parent 03d5974 commit e008d2f

4 files changed

Lines changed: 60 additions & 76 deletions

File tree

hpat/tests/tests_perf/__init__.py

Lines changed: 0 additions & 3 deletions
This file was deleted.

sdc/tests/tests_perf/test_perf_series.py

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -47,35 +47,33 @@ def usecase_series_max(input_data):
4747
return finish_time - start_time, res
4848

4949

50-
# python -m sdc.runtests sdc.tests.tests_perf.test_perf_series.TestSeriesFloatMethods
51-
class TestSeriesFloatMethods(TestBase):
50+
# python -m sdc.runtests sdc.tests.tests_perf.test_perf_series.TestSeriesMethods
51+
class TestSeriesMethods(TestBase):
5252
@classmethod
5353
def setUpClass(cls):
5454
super().setUpClass()
5555
cls.total_data_length = [5 * 10 ** 8]
5656

57-
def _test_series_float(self, pyfunc, name, input_data=None):
58-
59-
input_data = input_data or test_global_input_data_float64
57+
def _test_series(self, pyfunc, name):
58+
input_data = test_global_input_data_float64
6059
hpat_func = sdc.jit(pyfunc)
6160
for data_length in self.total_data_length:
62-
data = perf_data_gen_float(input_data, data_length)
61+
data, = perf_data_gen_fixed_len(input_data, data_length, 1)
6362
test_data = pd.Series(data)
6463

6564
compile_results = calc_compilation(pyfunc, test_data, iter_number=self.iter_number)
6665
# Warming up
6766
hpat_func(test_data)
6867

6968
exec_times, boxing_times = get_times(hpat_func, test_data, iter_number=self.iter_number)
70-
self.test_results.add(test_name=name, test_type='JIT', data_size=test_data.size, test_results=exec_times,
71-
boxing_results=boxing_times, compile_results=compile_results)
69+
self.test_results.add(name, 'JIT', test_data.size, exec_times, boxing_results=boxing_times,
70+
compile_results=compile_results)
7271

7372
exec_times, _ = get_times(pyfunc, test_data, iter_number=self.iter_number)
74-
self.test_results.add(test_name=name, test_type='Reference', data_size=test_data.size,
75-
test_results=exec_times)
73+
self.test_results.add(name, 'Reference', test_data.size, test_results=exec_times)
7674

7775
def test_series_float_min(self):
78-
self._test_series_float(usecase_series_min, 'series_float_min')
76+
self._test_series(usecase_series_min, 'series_float_min')
7977

8078
def test_series_float_max(self):
81-
self._test_series_float(usecase_series_max, 'series_float_max')
79+
self._test_series(usecase_series_max, 'series_float_max')

sdc/tests/tests_perf/test_perf_series_str.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ def setUpClass(cls):
118118
if is_true(os.environ.get('LOAD_PREV_RESULTS')):
119119
cls.test_results.load()
120120

121-
cls.total_data_length = [10**4 + 513, 10**5 + 2025]
121+
cls.total_data_length = [10**4, 10**5]
122122
cls.width = [16, 64, 512, 1024]
123123
cls.num_threads = int(os.environ.get('NUMBA_NUM_THREADS', config.NUMBA_NUM_THREADS))
124124
cls.threading_layer = os.environ.get('NUMBA_THREADING_LAYER', config.THREADING_LAYER)

sdc/tests/tests_perf/test_perf_utils.py

Lines changed: 49 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,13 @@
3030
import gc
3131
import sys
3232
import sdc
33+
import time
34+
from contextlib import contextmanager
35+
from copy import copy
3336
from pathlib import Path
3437

3538
import pandas
3639
from numba import config
37-
import time
38-
from contextlib import contextmanager
3940

4041
"""
4142
Utility functions collection to support performance testing of
@@ -74,24 +75,62 @@ def get_size(obj):
7475
return size
7576

7677

78+
def multiply_oneds_data(tmpl, max_len):
79+
"""Multiply specified 1D like data."""
80+
result = copy(tmpl)
81+
while len(result) < max_len:
82+
result += tmpl
83+
84+
# Trim result to max_len
85+
return result[:max_len]
86+
87+
7788
def multiply_data(tmpl, max_item_len):
7889
"""Multiply specified 2D like data."""
7990
result = []
8091
for item in tmpl:
81-
local_item = item
82-
local_item_len = len(local_item)
92+
result += multiply_oneds_data(item, max_item_len)
93+
94+
return result
95+
8396

84-
while (local_item_len < max_item_len) and (local_item_len >= 0):
85-
local_item += item
86-
local_item_len = len(local_item)
97+
def perf_data_gen(tmpl, max_item_len, max_bytes_size):
98+
"""
99+
Data generator produces 2D like data.
100+
tmpl: list of input template string
101+
max_item_len: length (in elements) of resulted string in an element of the result array
102+
max_bytes_size: maximum size in bytes of the return data
103+
104+
return: list of iterable data
105+
"""
106+
result = []
107+
while get_size(result) < max_bytes_size:
108+
result.extend(multiply_data(tmpl, max_item_len))
87109

88-
# Trim local_item to max_item_len
89-
local_item = local_item[:max_item_len]
90-
result.append(local_item)
110+
# Trim result to max_bytes_size
111+
while result and get_size(result) > max_bytes_size:
112+
del result[-1]
91113

92114
return result
93115

94116

117+
def perf_data_gen_fixed_len(tmpl, max_item_len, max_obj_len):
118+
"""
119+
Data generator produces 2D like data.
120+
tmpl: list of input template string
121+
max_item_len: length (in elements) of resulted string in an element of the result array
122+
max_obj_len: maximum length of the return data
123+
124+
return: list of iterable data
125+
"""
126+
result = []
127+
while len(result) < max_obj_len:
128+
result.extend(multiply_data(tmpl, max_item_len))
129+
130+
# Trim result to max_obj_len
131+
return result[:max_obj_len]
132+
133+
95134
@contextmanager
96135
def do_jit(f):
97136
"""Context manager to jit function"""
@@ -142,56 +181,6 @@ def get_times(f, test_data, iter_number=5):
142181
return exec_times, boxing_times
143182

144183

145-
def perf_data_gen(tmpl, max_item_len, max_bytes_size):
146-
"""
147-
Data generator produces 2D like data.
148-
tmpl: list of input template string
149-
max_item_len: length (in elements) of resulted string in an element of the result array
150-
max_bytes_size: maximum size in bytes of the return data
151-
152-
return: list of strings
153-
"""
154-
result = []
155-
while get_size(result) < max_bytes_size:
156-
result.extend(multiply_data(tmpl, max_item_len))
157-
158-
# Trim result to max_bytes_size
159-
while result and get_size(result) > max_bytes_size:
160-
del result[-1]
161-
162-
return result
163-
164-
165-
def perf_data_gen_fixed_len(tmpl, max_item_len, max_obj_len):
166-
"""
167-
Data generator produces 2D like data.
168-
tmpl: list of input template string
169-
max_item_len: length (in elements) of resulted string in an element of the result array
170-
max_obj_len: maximum length of the return data
171-
172-
return: list of strings
173-
"""
174-
result = []
175-
while len(result) < max_obj_len:
176-
result.extend(multiply_data(tmpl, max_item_len))
177-
178-
# Trim result to max_obj_len
179-
return result[:max_obj_len]
180-
181-
182-
def perf_data_gen_float(input, maxlen):
183-
"""
184-
"""
185-
result = []
186-
i = 0
187-
N = len(input)
188-
while len(result) < maxlen:
189-
n = (i - i // 2) % N
190-
result.extend(input[n])
191-
i += 1
192-
return result[:maxlen]
193-
194-
195184
class TestResults:
196185
perf_results_xlsx = 'perf_results.xlsx'
197186
raw_perf_results_xlsx = 'raw_perf_results.xlsx'

0 commit comments

Comments
 (0)