REF: algos_take_helper de-nest templating
State: closed

Having two layers of templating here is really weird, this unravels one layer so this file is organized like our other tempita files.  That makes future moves towards fused types and/or conditional nogil feasible.

Labels:
name: Clean

Comments:
> if that is fixed (later cython I think)? then this is fine.

yah, that's the crux of what @WillAyd mentioned.  do we want to move to the more modern usage in this PR or next pass?
> > if that is fixed (later cython I think)? then this is fine.
> 
> yah, that's the crux of what @WillAyd mentioned. do we want to move to the more modern usage in this PR or next pass?

ok here, any perf impact?
Updated to use the modern pattern.  an asv run with `-b take` didnt show any change, but i dont think that covers this code particularly well, so also doing a full (i.e. all-day) run now
No evident perf impact.

```
asv continuous -E virtualenv -f 1.1 master HEAD
[...]
       before           after         ratio
     [5a7b5c95]       [8b24ed6e]
     <master>         <ref-take_helper>
+      11.3±0.7μs       16.5±0.6μs     1.46  tslibs.timestamp.TimestampProperties.time_is_quarter_end(<UTC>, 'B')
+        938±60μs       1.32±0.2ms     1.41  frame_ctor.FromRecords.time_frame_from_records_generator(1000)
+        357±20ns         495±10ns     1.39  tslibs.timestamp.TimestampProperties.time_week(tzutc(), None)
+        99.6±4μs         134±10μs     1.34  tslibs.offsets.OffestDatetimeArithmetic.time_apply(<CustomBusinessMonthEnd>)
+      10.5±0.3ms         13.8±1ms     1.32  timeseries.DatetimeAccessor.time_dt_accessor_normalize('US/Eastern')
+     14.7±0.07μs         18.9±2μs     1.29  tslibs.offsets.OffestDatetimeArithmetic.time_apply_np_dt64(<YearBegin: month=1>)
+        533±40μs         661±80μs     1.24  ctors.SeriesConstructors.time_series_constructor(<function list_of_str at 0x1127c2320>, True, 'float')
+       858±100μs       1.05±0.2ms     1.23  ctors.SeriesConstructors.time_series_constructor(<function list_of_lists_with_none at 0x11288f7a0>, False, 'float')
+        498±10ns         606±80ns     1.22  index_cached_properties.IndexCache.time_inferred_type('RangeIndex')
+        862±30ns       1.04±0.1μs     1.20  index_cached_properties.IndexCache.time_is_monotonic('Int64Index')
+        855±60μs       1.02±0.2ms     1.19  ctors.SeriesConstructors.time_series_constructor(<function list_of_tuples_with_none at 0x11288f710>, False, 'int')
+       855±100μs        988±200μs     1.16  ctors.SeriesConstructors.time_series_constructor(<function list_of_lists_with_none at 0x11288f7a0>, False, 'int')
+        472±60μs        526±100μs     1.11  ctors.SeriesConstructors.time_series_constructor(<function list_of_str at 0x1127c2320>, False, 'int')
-         384±7μs         349±10μs     0.91  groupby.GroupByMethods.time_dtype_as_group('float', 'ffill', 'direct')
-      37.6±0.5μs       34.1±0.3μs     0.91  indexing.NonNumericSeriesIndexing.time_getitem_scalar('period', 'non_monotonic')
-      1.01±0.04s          921±5ms     0.91  join_merge.MergeAsof.time_multiby('nearest', None)
-      1.33±0.1ms       1.20±0.1ms     0.90  index_cached_properties.IndexCache.time_engine('MultiIndex')
-        748±20ns         673±20ns     0.90  index_cached_properties.IndexCache.time_is_monotonic_increasing('RangeIndex')
-        124±10ms          112±4ms     0.90  index_cached_properties.IndexCache.time_is_monotonic_increasing('IntervalIndex')
-      4.43±0.4μs       3.98±0.5μs     0.90  index_cached_properties.IndexCache.time_shape('MultiIndex')
-        938±40ms         842±10ms     0.90  join_merge.MergeAsof.time_multiby('forward', None)
-        796±30ms         714±10ms     0.90  join_merge.MergeAsof.time_multiby('backward', 5)
-        330±10ms          295±4ms     0.90  io.json.ReadJSONLines.time_read_json_lines('int')
-        178±20μs        160±0.6μs     0.90  indexing.NonNumericSeriesIndexing.time_getitem_pos_slice('datetime', 'non_monotonic')
-         107±5ms         95.5±1ms     0.89  stat_ops.FrameMultiIndexOps.time_op(1, 'kurt')
-       807±100μs         721±50μs     0.89  index_cached_properties.IndexCache.time_is_monotonic_decreasing('MultiIndex')
-     2.76±0.09ms      2.46±0.05ms     0.89  timeseries.ResampleSeries.time_resample('datetime', '1D', 'ohlc')
-      2.42±0.4μs      2.15±0.05μs     0.89  index_cached_properties.IndexCache.time_shape('DatetimeIndex')
-        49.6±2μs       44.1±0.6μs     0.89  array.BooleanArray.time_from_integer_array
-        70.2±5ms         62.3±2ms     0.89  rolling.Methods.time_rolling('Series', 1000, 'float', 'median')
-        94.4±6ms       83.8±0.3ms     0.89  io.hdf.HDF.time_read_hdf('table')
-        195±10μs          173±1μs     0.89  indexing.NonNumericSeriesIndexing.time_getitem_pos_slice('period', 'unique_monotonic_inc')
-        136±20μs         120±20μs     0.88  index_cached_properties.IndexCache.time_is_monotonic('UInt64Index')
-      2.33±0.4μs       2.06±0.2μs     0.88  index_cached_properties.IndexCache.time_inferred_type('MultiIndex')
-      11.8±0.5ms       10.4±0.1ms     0.88  strings.Cat.time_cat(0, None, '-', 0.15)
-      1.06±0.02s         931±20ms     0.88  join_merge.MergeAsof.time_multiby('nearest', 5)
-        71.7±2μs         63.2±1μs     0.88  indexing.NonNumericSeriesIndexing.time_getitem_scalar('period', 'nonunique_monotonic_inc')
-        51.1±2μs       44.9±0.5μs     0.88  indexing.NonNumericSeriesIndexing.time_getitem_scalar('period', 'unique_monotonic_inc')
-        60.8±2μs         53.4±1μs     0.88  timeseries.DatetimeIndex.time_get('tz_local')
-      3.20±0.08s       2.80±0.02s     0.88  groupby.GroupByMethods.time_dtype_as_group('float', 'describe', 'transformation')
-        29.5±1ms       25.8±0.9ms     0.88  strings.Methods.time_strip
-        10.7±2ms      9.30±0.06ms     0.87  stat_ops.Rank.time_rank('Series', False)
-      2.88±0.2μs       2.52±0.2μs     0.87  index_cached_properties.IndexCache.time_is_all_dates('TimedeltaIndex')
-      12.0±0.3ms       10.5±0.2ms     0.87  io.csv.ReadCSVSkipRows.time_skipprows(10000)
-     3.02±0.06ms      2.63±0.03ms     0.87  stat_ops.SeriesMultiIndexOps.time_op(1, 'sum')
-      6.38±0.1ms       5.56±0.1ms     0.87  inference.NumericInferOps.time_modulo(<class 'numpy.uint64'>)
-        45.3±4ms       39.3±0.5ms     0.87  strings.Contains.time_contains(True)
-      1.89±0.3ms       1.64±0.2ms     0.87  index_cached_properties.IndexCache.time_is_unique('IntervalIndex')
-         414±6μs         358±10μs     0.87  offset.OffsetSeriesArithmetic.time_add_offset(<Day>)
-      1.86±0.2ms       1.60±0.2ms     0.86  index_cached_properties.IndexCache.time_is_unique('TimedeltaIndex')
-      2.50±0.3μs       2.16±0.1μs     0.86  index_cached_properties.IndexCache.time_values('IntervalIndex')
-        853±40μs        737±100μs     0.86  index_cached_properties.IndexCache.time_is_monotonic_increasing('MultiIndex')
-         183±5ms          158±6ms     0.86  indexing.NumericSeriesIndexing.time_getitem_lists(<class 'pandas.core.indexes.numeric.Int64Index'>, 'nonunique_monotonic_inc')
-      1.44±0.1ms      1.23±0.02ms     0.86  groupby.SumBools.time_groupby_sum_booleans
-       149±0.6ms          128±2ms     0.86  indexing.NumericSeriesIndexing.time_getitem_list_like(<class 'pandas.core.indexes.numeric.UInt64Index'>, 'unique_monotonic_inc')
-        324±30μs          277±8μs     0.85  stat_ops.SeriesOps.time_op('skew', 'int')
-         307±5ms         261±10ms     0.85  indexing.NumericSeriesIndexing.time_getitem_list_like(<class 'pandas.core.indexes.numeric.Float64Index'>, 'unique_monotonic_inc')
-         178±3ms          151±2ms     0.85  io.hdf.HDFStoreDataFrame.time_write_store_table_dc
-        311±30μs          263±2μs     0.85  stat_ops.SeriesOps.time_op('prod', 'float')
-        133±20ms          112±4ms     0.85  index_cached_properties.IndexCache.time_engine('IntervalIndex')
-        29.3±1ms         24.7±2ms     0.84  strings.Methods.time_lstrip
-      3.60±0.6μs       3.03±0.5μs     0.84  index_cached_properties.IndexCache.time_shape('UInt64Index')
-        29.0±3μs       24.4±0.6μs     0.84  tslibs.timestamp.TimestampOps.time_replace_tz(None)
-         180±9μs         151±20μs     0.84  index_cached_properties.IndexCache.time_is_monotonic('TimedeltaIndex')
-      1.33±0.1ms      1.11±0.01ms     0.84  timedelta.DatetimeAccessor.time_timedelta_microseconds
-      2.41±0.3μs       2.02±0.1μs     0.84  index_cached_properties.IndexCache.time_is_all_dates('IntervalIndex')
-        709±20μs          592±8μs     0.84  inference.NumericInferOps.time_divide(<class 'numpy.float64'>)
-        21.3±1ms       17.8±0.4ms     0.83  gil.ParallelGroupbyMethods.time_parallel(2, 'mean')
-      3.03±0.2μs       2.53±0.2μs     0.83  index_cached_properties.IndexCache.time_values('TimedeltaIndex')
-        133±10ms          111±2ms     0.83  index_cached_properties.IndexCache.time_is_monotonic('IntervalIndex')
-      2.06±0.2μs      1.71±0.06μs     0.83  tslibs.timestamp.TimestampConstruction.time_fromtimestamp
-        201±10μs          166±2μs     0.83  indexing.NonNumericSeriesIndexing.time_getitem_pos_slice('period', 'non_monotonic')
-      1.06±0.1ms         878±90μs     0.83  ctors.SeriesConstructors.time_series_constructor(<function list_of_tuples at 0x11288f560>, True, 'int')
-        33.6±2ms       27.7±0.4ms     0.83  inference.ToNumericDowncast.time_downcast('int-list', 'unsigned')
-        394±40ns         326±10ns     0.83  tslibs.timestamp.TimestampProperties.time_days_in_month(tzutc(), None)
-      6.19±0.1ms       5.11±0.3ms     0.83  io.csv.ReadUint64Integers.time_read_uint64_na_values
-        11.2±1ms       9.26±0.3ms     0.83  stat_ops.Rank.time_rank('Series', True)
-      3.04±0.3μs       2.51±0.5μs     0.82  index_cached_properties.IndexCache.time_values('UInt64Index')
-        175±20μs         144±20μs     0.82  index_cached_properties.IndexCache.time_is_monotonic_decreasing('TimedeltaIndex')
-        975±90μs          802±9μs     0.82  groupby.GroupByMethods.time_dtype_as_group('datetime', 'value_counts', 'direct')
-        742±70μs         610±20μs     0.82  timeseries.DatetimeIndex.time_to_date('dst')
-         147±9μs          121±3μs     0.82  timeseries.SortIndex.time_get_slice(False)
-      9.91±0.9μs       8.12±0.1μs     0.82  timeseries.DatetimeIndex.time_get('tz_aware')
-        369±40ns         301±10ns     0.82  tslibs.timestamp.TimestampProperties.time_dayofweek(None, None)
-        738±70μs          602±8μs     0.82  groupby.GroupByMethods.time_dtype_as_group('datetime', 'cummin', 'transformation')
-         112±6ms         91.5±3ms     0.81  io.json.ToJSON.time_to_json_wide('split', 'df')
-      1.83±0.1ms      1.49±0.01ms     0.81  inference.NumericInferOps.time_divide(<class 'numpy.uint64'>)
-         106±6μs         86.4±3μs     0.81  indexing.NumericSeriesIndexing.time_iloc_list_like(<class 'pandas.core.indexes.numeric.Int64Index'>, 'nonunique_monotonic_inc')
-      8.34±0.1ms       6.75±0.6ms     0.81  stat_ops.FrameOps.time_op('std', 'float', 1)
-        44.2±1ms       35.7±0.3ms     0.81  reshape.Cut.time_cut_int(1000)
-      10.3±0.3ms         8.29±1ms     0.81  timeseries.SortIndex.time_sort_index(False)
-      11.8±0.6ms       9.51±0.2ms     0.81  io.csv.ReadCSVConcatDatetimeBadDateValue.time_read_csv('')
-      13.9±0.6ms       11.2±0.6ms     0.81  indexing.NumericSeriesIndexing.time_loc_scalar(<class 'pandas.core.indexes.numeric.UInt64Index'>, 'nonunique_monotonic_inc')
-     2.43±0.07ms      1.95±0.09ms     0.80  timeseries.DatetimeAccessor.time_dt_accessor_year('UTC')
-         176±8μs         142±10μs     0.80  index_cached_properties.IndexCache.time_is_monotonic_increasing('TimedeltaIndex')
-      8.28±0.2ms       6.66±0.8ms     0.80  stat_ops.FrameOps.time_op('sem', 'int', 0)
-      4.66±0.3ms      3.74±0.03ms     0.80  groupby.Transform.time_transform_ufunc_max
-        166±10μs         133±20μs     0.80  index_cached_properties.IndexCache.time_is_monotonic_decreasing('Float64Index')
-         274±5μs          220±2μs     0.80  inference.NumericInferOps.time_subtract(<class 'numpy.uint16'>)
-     2.26±0.03ms      1.81±0.06ms     0.80  rolling.VariableWindowMethods.time_rolling('DataFrame', '1h', 'int', 'count')
-      4.20±0.1ms       3.36±0.5ms     0.80  rolling.Methods.time_rolling('Series', 1000, 'float', 'max')
-      14.7±0.2μs       11.8±0.6μs     0.80  tslibs.offsets.OnOffset.time_on_offset(<YearEnd: month=12>)
-      1.22±0.1μs         975±30ns     0.80  dtypes.Dtypes.time_pandas_dtype(<class 'pandas.core.arrays.integer.UInt8Dtype'>)
-        58.0±2ms       45.9±0.5ms     0.79  strings.Methods.time_match
-      3.17±0.1ms       2.50±0.4ms     0.79  rolling.Methods.time_rolling('Series', 1000, 'int', 'skew')
-        139±10μs          110±1μs     0.79  stat_ops.SeriesOps.time_op('prod', 'int')
-        569±80μs          450±6μs     0.79  groupby.GroupByMethods.time_dtype_as_group('datetime', 'quantile', 'direct')
-     2.65±0.06ms      2.09±0.04ms     0.79  io.csv.ReadCSVFloatPrecision.time_read_csv(';', '.', 'round_trip')
-     1.80±0.05ms       1.41±0.1ms     0.79  stat_ops.FrameOps.time_op('var', 'int', 1)
-      2.54±0.4μs       1.99±0.3μs     0.78  index_cached_properties.IndexCache.time_is_all_dates('Float64Index')
-         236±3μs          185±3μs     0.78  indexing.NumericSeriesIndexing.time_loc_scalar(<class 'pandas.core.indexes.numeric.Float64Index'>, 'nonunique_monotonic_inc')
-        28.6±4ms       22.4±0.3ms     0.78  reshape.Cut.time_cut_datetime(1000)
-     1.09±0.03ms         856±40μs     0.78  inference.NumericInferOps.time_divide(<class 'numpy.uint32'>)
-        590±90μs         461±10μs     0.78  groupby.GroupByMethods.time_dtype_as_group('float', 'prod', 'direct')
-        255±10ms          199±2ms     0.78  stat_ops.SeriesMultiIndexOps.time_op([0, 1], 'kurt')
-      3.87±0.3ms      3.02±0.07ms     0.78  rolling.VariableWindowMethods.time_rolling('Series', '1h', 'int', 'kurt')
-        11.4±1μs       8.92±0.4μs     0.78  tslibs.timestamp.TimestampOps.time_tz_convert('US/Eastern')
-      9.00±0.4μs       7.02±0.1μs     0.78  dtypes.InferDtypes.time_infer('empty')
-        593±80μs          462±6μs     0.78  groupby.GroupByMethods.time_dtype_as_field('object', 'nunique', 'transformation')
-        559±80μs          435±6μs     0.78  groupby.GroupByMethods.time_dtype_as_group('datetime', 'quantile', 'transformation')
-       991±100μs          773±9μs     0.78  reindex.ReindexMethod.time_reindex_method('backfill', <function period_range at 0x111ce97a0>)
-      1.02±0.1ms         792±20μs     0.78  groupby.GroupByMethods.time_dtype_as_group('float', 'value_counts', 'transformation')
-        305±50μs          237±3μs     0.77  groupby.GroupByMethods.time_dtype_as_group('object', 'nunique', 'direct')
-     2.00±0.03ms      1.54±0.03ms     0.77  io.csv.ReadCSVFloatPrecision.time_read_csv(',', '_', 'round_trip')
-        154±30μs         119±10μs     0.77  index_cached_properties.IndexCache.time_is_monotonic_decreasing('UInt64Index')
-      3.15±0.1ms      2.43±0.04ms     0.77  stat_ops.FrameMultiIndexOps.time_op(1, 'var')
-      13.7±0.5ms       10.6±0.2ms     0.77  io.csv.ReadCSVConcatDatetimeBadDateValue.time_read_csv('nan')
-        20.7±1μs       16.0±0.3μs     0.77  tslibs.offsets.OffestDatetimeArithmetic.time_add(<BusinessDay>)
-      4.53±0.1ms       3.49±0.1ms     0.77  rolling.VariableWindowMethods.time_rolling('DataFrame', '1h', 'float', 'max')
-        424±60μs          326±5μs     0.77  groupby.GroupByMethods.time_dtype_as_group('float', 'first', 'transformation')
-      6.35±0.9μs       4.87±0.4μs     0.77  index_cached_properties.IndexCache.time_shape('TimedeltaIndex')
-      5.02±0.6μs       3.84±0.1μs     0.77  index_cached_properties.IndexCache.time_engine('DatetimeIndex')
-       978±100μs         749±20μs     0.77  groupby.GroupByMethods.time_dtype_as_group('float', 'cumprod', 'transformation')
-       605±100μs         462±10μs     0.76  groupby.GroupByMethods.time_dtype_as_group('float', 'prod', 'transformation')
-        167±20μs          127±9μs     0.76  index_cached_properties.IndexCache.time_is_monotonic_increasing('Float64Index')
-     3.98±0.07ms      3.02±0.04ms     0.76  indexing.NumericSeriesIndexing.time_getitem_array(<class 'pandas.core.indexes.numeric.Int64Index'>, 'unique_monotonic_inc')
-        433±50μs         329±10μs     0.76  groupby.GroupByMethods.time_dtype_as_group('float', 'head', 'direct')
-        478±30μs         362±10μs     0.76  offset.ApplyIndex.time_apply_index(<QuarterBegin: startingMonth=3>)
-      20.0±0.7μs       15.1±0.4μs     0.76  tslibs.offsets.OffestDatetimeArithmetic.time_apply(<QuarterBegin: startingMonth=3>)
-     2.28±0.04ms      1.72±0.09ms     0.76  indexing.NumericSeriesIndexing.time_getitem_list_like(<class 'pandas.core.indexes.numeric.Float64Index'>, 'nonunique_monotonic_inc')
-     2.58±0.03ms      1.94±0.03ms     0.75  rolling.VariableWindowMethods.time_rolling('DataFrame', '50s', 'float', 'mean')
-     3.10±0.06ms       2.34±0.4ms     0.75  rolling.Quantile.time_quantile('DataFrame', 10, 'int', 0, 'linear')
-     2.09±0.07ms      1.57±0.02ms     0.75  io.csv.ReadCSVFloatPrecision.time_read_csv(';', '_', 'high')
-        63.6±5ms       47.7±0.3ms     0.75  strings.Methods.time_rfind
-      39.4±0.7ms         29.5±2ms     0.75  strings.Methods.time_startswith
-     4.54±0.08ms       3.40±0.1ms     0.75  indexing.NonNumericSeriesIndexing.time_getitem_list_like('period', 'unique_monotonic_inc')
-      6.59±0.3ms       4.94±0.5ms     0.75  stat_ops.FrameOps.time_op('var', 'float', 0)
-        434±50μs          325±7μs     0.75  groupby.GroupByMethods.time_dtype_as_group('float', 'last', 'transformation')
-     3.73±0.09ms       2.80±0.1ms     0.75  rolling.VariableWindowMethods.time_rolling('Series', '1h', 'int', 'skew')
-        544±90μs          407±8μs     0.75  reindex.ReindexMethod.time_reindex_method('pad', <function date_range at 0x111c7ab00>)
-      2.96±0.4μs       2.21±0.5μs     0.75  index_cached_properties.IndexCache.time_inferred_type('Float64Index')
-      4.82±0.3ms       3.61±0.2ms     0.75  frame_methods.NSort.time_nlargest_two_columns('last')
-         127±4ms         94.8±7ms     0.75  groupby.GroupByMethods.time_dtype_as_field('float', 'unique', 'direct')
-     1.10±0.03ms         822±30μs     0.75  inference.NumericInferOps.time_divide(<class 'numpy.int16'>)
-      1.95±0.2ms      1.45±0.06ms     0.74  index_cached_properties.IndexCache.time_is_unique('UInt64Index')
-         178±3μs         132±10μs     0.74  groupby.GroupByMethods.time_dtype_as_field('float', 'count', 'transformation')
-      2.83±0.2ms      2.10±0.04ms     0.74  inference.NumericInferOps.time_modulo(<class 'numpy.int16'>)
-      2.87±0.1ms      2.13±0.06ms     0.74  io.csv.ReadCSVFloatPrecision.time_read_csv(',', '.', 'round_trip')
-        306±10μs          227±8μs     0.74  inference.NumericInferOps.time_multiply(<class 'numpy.uint8'>)
-      2.35±0.3ms      1.74±0.03ms     0.74  stat_ops.FrameOps.time_op('kurt', 'int', 0)
-      2.84±0.7ms      2.10±0.01ms     0.74  frame_methods.NSort.time_nsmallest_one_column('last')
-      1.93±0.3ms      1.42±0.05ms     0.74  groupby.RankWithTies.time_rank_ties('float32', 'dense')
-        301±10μs          223±7μs     0.74  groupby.GroupByMethods.time_dtype_as_field('float', 'all', 'direct')
-        841±70μs         621±30μs     0.74  groupby.GroupByMethods.time_dtype_as_group('float', 'cumsum', 'direct')
-      2.12±0.2ms      1.57±0.05ms     0.74  io.csv.ReadCSVFloatPrecision.time_read_csv(',', '_', None)
-      3.46±0.2ms      2.55±0.05ms     0.74  inference.NumericInferOps.time_modulo(<class 'numpy.int8'>)
-      2.55±0.1ms       1.88±0.1ms     0.74  indexing.NumericSeriesIndexing.time_getitem_list_like(<class 'pandas.core.indexes.numeric.UInt64Index'>, 'nonunique_monotonic_inc')
-     1.94±0.05ms       1.43±0.1ms     0.74  groupby.GroupByMethods.time_dtype_as_field('int', 'pct_change', 'transformation')
-      4.56±0.1ms      3.36±0.08ms     0.74  io.csv.ReadCSVFloatPrecision.time_read_csv_python_engine(',', '_', 'round_trip')
-        586±80μs          432±6μs     0.74  groupby.GroupByMethods.time_dtype_as_field('int', 'mean', 'direct')
-     1.82±0.06ms      1.34±0.03ms     0.74  io.csv.ReadCSVFloatPrecision.time_read_csv(';', '.', 'high')
-        664±20μs          489±8μs     0.74  join_merge.Concat.time_concat_mixed_ndims(1)
-        15.2±2μs         11.2±1μs     0.74  index_cached_properties.IndexCache.time_engine('UInt64Index')
-        322±10μs          237±8μs     0.74  groupby.GroupByMethods.time_dtype_as_field('datetime', 'shift', 'direct')
-        445±20μs          327±9μs     0.74  groupby.GroupByMethods.time_dtype_as_group('datetime', 'min', 'transformation')
-     1.02±0.07ms         745±30μs     0.73  frame_methods.SelectDtypes.time_select_dtypes(100)
-      1.91±0.3ms      1.40±0.01ms     0.73  groupby.RankWithTies.time_rank_ties('int64', 'dense')
-         377±8μs         277±10μs     0.73  groupby.GroupByMethods.time_dtype_as_field('datetime', 'last', 'transformation')
-      16.0±0.5ms       11.8±0.2ms     0.73  stat_ops.FrameOps.time_op('sem', 'float', 1)
-        449±10μs          329±4μs     0.73  groupby.GroupByMethods.time_dtype_as_group('int', 'min', 'direct')
-      2.68±0.6μs       1.96±0.3μs     0.73  index_cached_properties.IndexCache.time_inferred_type('UInt64Index')
-      1.37±0.2ms         999±10μs     0.73  stat_ops.SeriesOps.time_op('median', 'float')
-        487±20μs         356±10μs     0.73  groupby.GroupByMethods.time_dtype_as_field('int', 'tail', 'transformation')
-     8.23±0.07ms       6.00±0.7ms     0.73  rolling.Pairwise.time_pairwise(None, 'corr', False)
-     4.72±0.05ms      3.43±0.08ms     0.73  timeseries.ToDatetimeCache.time_dup_seconds_and_unit(True)
-      1.96±0.1ms      1.43±0.02ms     0.73  io.csv.ReadCSVFloatPrecision.time_read_csv(',', '.', 'high')
-        21.8±1ms       15.9±0.2ms     0.73  reshape.Crosstab.time_crosstab_normalize
-        611±60μs          444±6μs     0.73  groupby.GroupByMethods.time_dtype_as_group('float', 'quantile', 'transformation')
-      2.63±0.2μs       1.91±0.2μs     0.73  index_cached_properties.IndexCache.time_is_all_dates('UInt64Index')
-      2.92±0.7μs       2.11±0.3μs     0.72  index_cached_properties.IndexCache.time_values('Float64Index')
-         470±6μs          340±5μs     0.72  groupby.GroupByMethods.time_dtype_as_group('float', 'bfill', 'direct')
-      13.4±0.4ms       9.67±0.1ms     0.72  stat_ops.Rank.time_average_old('Series', True)
-      6.64±0.4ms       4.79±0.1ms     0.72  timeseries.TimeDatetimeConverter.time_convert
-         638±3μs         459±20μs     0.72  groupby.GroupByMethods.time_dtype_as_field('int', 'quantile', 'direct')
-        149±30μs          107±1μs     0.72  index_cached_properties.IndexCache.time_is_monotonic_decreasing('PeriodIndex')
-      2.10±0.1ms      1.51±0.02ms     0.72  io.csv.ReadCSVFloatPrecision.time_read_csv(';', '_', 'round_trip')
-      4.88±0.3ms       3.51±0.1ms     0.72  frame_methods.NSort.time_nlargest_two_columns('first')
-      2.67±0.3ms      1.92±0.05ms     0.72  stat_ops.SeriesMultiIndexOps.time_op(0, 'sum')
-      1.45±0.2ms      1.04±0.02ms     0.72  groupby.Categories.time_groupby_extra_cat_sort
-      15.2±0.6ms       10.9±0.6ms     0.71  groupby.Nth.time_frame_nth('object')
-     2.09±0.09ms      1.48±0.04ms     0.71  io.csv.ReadCSVFloatPrecision.time_read_csv(',', '.', None)
-      3.48±0.2ms      2.48±0.03ms     0.71  stat_ops.SeriesMultiIndexOps.time_op(0, 'std')
-      1.99±0.1ms      1.41±0.04ms     0.71  io.csv.ReadCSVFloatPrecision.time_read_csv(';', '.', None)
-         584±8μs         414±20μs     0.71  stat_ops.FrameOps.time_op('prod', 'int', 0)
-     2.05±0.03ms      1.45±0.01ms     0.71  indexing.NumericSeriesIndexing.time_loc_list_like(<class 'pandas.core.indexes.numeric.Float64Index'>, 'nonunique_monotonic_inc')
-        449±70μs          317±9μs     0.71  groupby.GroupByMethods.time_dtype_as_group('datetime', 'max', 'transformation')
-        35.4±2ms       25.0±0.7ms     0.70  join_merge.Merge.time_merge_2intkey(True)
-      5.06±0.1ms       3.56±0.2ms     0.70  rolling.VariableWindowMethods.time_rolling('Series', '50s', 'int', 'min')
-      1.25±0.2ms         879±40μs     0.70  stat_ops.FrameOps.time_op('var', 'int', 0)
-      3.29±0.2ms      2.30±0.07ms     0.70  inference.NumericInferOps.time_modulo(<class 'numpy.int32'>)
-        304±30μs          212±8μs     0.70  stat_ops.SeriesOps.time_op('var', 'int')
-        492±20μs         343±10μs     0.70  groupby.GroupByMethods.time_dtype_as_group('float', 'max', 'transformation')
-      2.53±0.6μs       1.76±0.2μs     0.70  index_cached_properties.IndexCache.time_is_all_dates('MultiIndex')
-      2.02±0.1ms      1.41±0.02ms     0.70  groupby.RankWithTies.time_rank_ties('int64', 'max')
-        631±20μs         439±20μs     0.70  groupby.GroupByMethods.time_dtype_as_field('int', 'sum', 'transformation')
-     2.58±0.07ms      1.79±0.02ms     0.69  stat_ops.SeriesOps.time_op('mad', 'int')
-      4.63±0.2ms       3.20±0.3ms     0.69  stat_ops.SeriesMultiIndexOps.time_op(0, 'median')
-      12.3±0.2ms       8.47±0.2ms     0.69  stat_ops.Rank.time_average_old('DataFrame', True)
-         659±6μs         455±10μs     0.69  groupby.GroupByMethods.time_dtype_as_field('int', 'std', 'transformation')
-     1.18±0.02ms         811±10μs     0.69  groupby.GroupByMethods.time_dtype_as_group('float', 'rank', 'transformation')
-        640±40μs         439±20μs     0.69  groupby.GroupByMethods.time_dtype_as_field('int', 'mean', 'transformation')
-         130±2μs         89.0±1μs     0.69  indexing.NumericSeriesIndexing.time_getitem_scalar(<class 'pandas.core.indexes.numeric.Float64Index'>, 'nonunique_monotonic_inc')
-     2.09±0.06ms      1.42±0.04ms     0.68  groupby.GroupByMethods.time_dtype_as_group('float', 'pct_change', 'direct')
-         509±7μs          347±6μs     0.68  groupby.GroupByMethods.time_dtype_as_group('float', 'nunique', 'direct')
-        670±40μs         455±10μs     0.68  groupby.GroupByMethods.time_dtype_as_group('float', 'median', 'transformation')
-        472±30μs          320±7μs     0.68  groupby.GroupByMethods.time_dtype_as_group('datetime', 'first', 'transformation')
-        603±30μs          407±7μs     0.68  stat_ops.SeriesOps.time_op('var', 'float')
-        491±20μs          330±6μs     0.67  groupby.GroupByMethods.time_dtype_as_group('float', 'min', 'transformation')
-         691±9μs         464±10μs     0.67  groupby.GroupByMethods.time_dtype_as_group('float', 'mean', 'direct')
-        51.7±9μs       34.7±0.3μs     0.67  index_cached_properties.IndexCache.time_engine('RangeIndex')
-        491±20μs          329±3μs     0.67  groupby.GroupByMethods.time_dtype_as_group('datetime', 'min', 'direct')
-        503±10μs          337±7μs     0.67  groupby.GroupByMethods.time_dtype_as_group('float', 'nunique', 'transformation')
-         497±7μs         332±10μs     0.67  groupby.GroupByMethods.time_dtype_as_group('float', 'min', 'direct')
-        184±10μs          123±6μs     0.67  index_cached_properties.IndexCache.time_is_monotonic('Float64Index')
-        158±30μs          105±1μs     0.67  index_cached_properties.IndexCache.time_is_monotonic_increasing('PeriodIndex')
-     2.05±0.05ms      1.36±0.02ms     0.66  groupby.GroupByMethods.time_dtype_as_group('float', 'pct_change', 'transformation')
-        483±20μs          319±4μs     0.66  stat_ops.FrameOps.time_op('prod', 'int', 1)
-        366±20μs          242±5μs     0.66  groupby.GroupByMethods.time_dtype_as_group('datetime', 'ffill', 'direct')
-        706±20μs          463±6μs     0.66  groupby.GroupByMethods.time_dtype_as_group('float', 'quantile', 'direct')
-      3.13±0.2ms       2.04±0.1ms     0.65  stat_ops.FrameOps.time_op('prod', 'float', 1)
-        494±30μs          322±5μs     0.65  groupby.GroupByMethods.time_dtype_as_group('datetime', 'head', 'direct')
-        437±20μs         283±20μs     0.65  stat_ops.SeriesOps.time_op('kurt', 'int')
-     3.57±0.07ms      2.28±0.03ms     0.64  groupby.TransformBools.time_transform_mean
-     1.42±0.03ms         901±20μs     0.64  stat_ops.SeriesOps.time_op('sem', 'float')
-        518±20μs          329±5μs     0.64  groupby.GroupByMethods.time_dtype_as_group('float', 'max', 'direct')
-      3.20±0.2ms      1.98±0.03ms     0.62  frame_methods.NSort.time_nsmallest_one_column('all')
-        736±20μs          455±6μs     0.62  groupby.GroupByMethods.time_dtype_as_group('float', 'median', 'direct')
-      4.68±0.5μs       2.84±0.5μs     0.61  index_cached_properties.IndexCache.time_shape('Float64Index')
-        19.6±1μs         11.0±4μs     0.56  index_cached_properties.IndexCache.time_engine('Float64Index')
-      4.98±0.8ms      2.73±0.09ms     0.55  index_object.Indexing.time_get_loc_non_unique('Float')
```