@@ -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
6377class 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
99128class Sortlevel (object ):
100129
0 commit comments