Skip to content

Commit 9189ef3

Browse files
committed
Parameterize set benchmark
1 parent 488ac7b commit 9189ef3

File tree

1 file changed

+26
-54
lines changed

1 file changed

+26
-54
lines changed

asv_bench/benchmarks/index_object.py

Lines changed: 26 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -8,69 +8,41 @@
88
class SetOperations(object):
99

1010
goal_time = 0.2
11+
params = (['datetime', 'date_string', 'int', 'strings'],
12+
['intersection', 'union', 'symmetric_difference'])
13+
param_names = ['dtype', 'method']
1114

12-
def setup(self):
13-
self.dates_left = date_range('1/1/2000', periods=10000, freq='T')
14-
self.dates_right = self.dates_left[:(-1)]
15-
15+
def setup(self, dtype, method):
16+
N = 10**5
17+
dates_left = date_range('1/1/2000', periods=N, freq='T')
1618
fmt = '%Y-%m-%d %H:%M:%S'
17-
self.date_str_left = Index(self.dates_left.strftime(fmt))
18-
self.date_str_right = self.date_str_left[:-1]
19-
20-
# other datetime
21-
N = 100000
22-
A = N - 20000
23-
B = N + 20000
24-
self.datetime_left = DatetimeIndex(range(N))
25-
self.datetime_right = DatetimeIndex(range(A, B))
26-
self.datetime_right2 = DatetimeIndex(range(N, B))
19+
date_str_left = Index(dates_left.strftime(fmt))
20+
int_left = Index(np.arange(N))
21+
str_left = tm.makeStringIndex(N)
22+
data = {'datetime': {'left': dates_left, 'right': dates_left[:-1]},
23+
'date_string': {'left': date_str_left,
24+
'right': date_str_left[:-1]},
25+
'int': {'left': int_left, 'right': int_left[:-1]},
26+
'strings': {'left': str_left, 'right': str_left[:-1]}}
27+
self.left = data[dtype]['left']
28+
self.right = data[dtype]['right']
2729

28-
options = np.arange(N)
29-
self.int_left = Index(options.take(np.random.permutation(N)[:N // 2]))
30-
self.int_right = Index(options.take(np.random.permutation(N)[:N // 2]))
30+
def time_operation(self, dtype, method):
31+
getattr(self.left, method)(self.right)
3132

32-
strs = tm.rands_array(10, N / 10)
33-
self.str_left = Index(strs[:N / 10 * 2 // 3])
34-
self.str_right = Index(strs[N / 10 // 3:])
3533

36-
def time_datetime_intersection(self):
37-
self.dates_left.intersection(self.dates_right)
34+
class SetDisjoint(object):
3835

39-
def time_datetime_union(self):
40-
self.dates_left.union(self.dates_right)
36+
goal_time = 0.2
4137

42-
def time_datetime_difference(self):
43-
self.datetime_left.difference(self.datetime_right)
38+
def setup(self):
39+
N = 10**5
40+
B = N + 20000
41+
self.datetime_left = DatetimeIndex(range(N))
42+
self.datetime_right = DatetimeIndex(range(N, B))
4443

4544
def time_datetime_difference_disjoint(self):
46-
self.datetime_left.difference(self.datetime_right2)
47-
48-
def time_datetime_symmetric_difference(self):
49-
self.datetime_left.symmetric_difference(self.datetime_right)
50-
51-
def time_index_datetime_intersection(self):
52-
self.date_str_left.intersection(self.date_str_right)
53-
54-
def time_index_datetime_union(self):
55-
self.date_str_left.union(self.date_str_right)
56-
57-
def time_int64_intersection(self):
58-
self.int_left.intersection(self.int_right)
59-
60-
def time_int64_union(self):
61-
self.int_left.union(self.int_right)
62-
63-
def time_int64_difference(self):
64-
self.int_left.difference(self.int_right)
65-
66-
def time_int64_symmetric_difference(self):
67-
self.int_left.symmetric_difference(self.int_right)
68-
69-
def time_str_difference(self):
70-
self.str_left.difference(self.str_right)
71-
72-
def time_str_symmetric_difference(self):
73-
self.str_left.symmetric_difference(self.str_right)
45+
self.datetime_left.difference(self.datetime_right)
7446

7547

7648
class Datetime(object):

0 commit comments

Comments
 (0)