Skip to content

Commit b72f9c5

Browse files
committed
TST: asv tests for indexing in non-unique MultiIndex
1 parent ddd29ae commit b72f9c5

File tree

1 file changed

+32
-3
lines changed

1 file changed

+32
-3
lines changed

asv_bench/benchmarks/multiindex_object.py

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,16 +49,30 @@ class Duplicates(object):
4949
goal_time = 0.2
5050

5151
def setup(self):
52-
size = 65536
52+
size = 6553
5353
arrays = [np.random.randint(0, 8192, size),
5454
np.random.randint(0, 1024, size)]
55-
mask = np.random.rand(size) < 0.1
5655
self.mi_unused_levels = MultiIndex.from_arrays(arrays)
57-
self.mi_unused_levels = self.mi_unused_levels[mask]
56+
self.mi = self.mi_unused_levels.remove_unused_levels()
57+
self.sorted = self.mi.sort_values()
58+
self.key = self.mi[len(self.mi) // 2]
59+
self.partial_key = (self.key[0],)
5860

5961
def time_remove_unused_levels(self):
6062
self.mi_unused_levels.remove_unused_levels()
6163

64+
def time_duplicates_loc(self):
65+
self.mi.get_loc(self.key)
66+
67+
def time_duplicates_partial_loc(self):
68+
self.mi.get_loc(self.partial_key)
69+
70+
def time_duplicates_sorted_loc(self):
71+
self.sorted.get_loc(self.key)
72+
73+
def time_duplicates_sorted_partial_loc(self):
74+
self.sorted.get_loc(self.partial_key)
75+
6276

6377
class Integer(object):
6478

@@ -91,10 +105,25 @@ def setup(self):
91105
1000 + np.arange(n)]
92106
labels = [np.random.choice(n, (k * n)) for lev in levels]
93107
self.mi = MultiIndex(levels=levels, labels=labels)
108+
self.sorted = self.mi.sort_values()
109+
self.key = self.mi[len(self.mi) // 2]
110+
self.partial_key = (self.key[0], self.key[1])
94111

95112
def time_duplicated(self):
96113
self.mi.duplicated()
97114

115+
def time_duplicated_loc(self):
116+
self.mi.get_loc(self.key)
117+
118+
def time_duplicated_partial_loc(self):
119+
self.mi.get_loc(self.partial_key)
120+
121+
def time_duplicates_sorted_loc(self):
122+
self.sorted.get_loc(self.key)
123+
124+
def time_duplicates_sorted_partial_loc(self):
125+
self.sorted.get_loc(self.partial_key)
126+
98127

99128
class Sortlevel(object):
100129

0 commit comments

Comments
 (0)