Open
Description
PR #56633 may have induced a performance regression. If it was a necessary behavior change, this may have been expected and everything is okay.
Please check the links below. If any ASVs are parameterized, the combinations of parameters that a regression has been detected for appear as subbullets.
- arithmetic.FrameWithFrameWide.time_op_different_blocks -> PERF: DataFrame(ndarray) constructor ensure to copy to column-major layout #57459
- arithmetic.MixedFrameWithSeriesAxis.time_frame_op_with_series_axis0
- arithmetic.NumericInferOps.time_add (no item_cache overhead)
- arithmetic.NumericInferOps.time_multiply (no item_cache overhead)
- arithmetic.NumericInferOps.time_subtract (no item_cache overhead)
- eval.Eval.time_add
- eval.Eval.time_mult
- frame_ctor.FromNDArray.time_frame_from_ndarray
- frame_methods.Apply.time_apply_axis_1
- frame_methods.Apply.time_apply_pass_thru
- frame_methods.AsType.time_astype
- from_to_dtypes=('Float64', 'float64'); copy=True
- from_to_dtypes=('Int64', 'Float64'); copy=False
- from_to_dtypes=('Int64', 'Float64'); copy=True
- from_to_dtypes=('float64', 'Float64'); copy=True
- from_to_dtypes=('float64', 'float64[pyarrow]'); copy=True
- from_to_dtypes=('float64[pyarrow]', 'float64'); copy=True
- from_to_dtypes=('int64[pyarrow]', 'float64[pyarrow]'); copy=True
- frame_methods.Dtypes.time_frame_dtypes
- frame_methods.Fillna.time_fillna
- frame_methods.Iteration.peakmem_itertuples
- frame_methods.Iteration.peakmem_itertuples_raw
- frame_methods.Iteration.peakmem_itertuples_raw_read_first
- frame_methods.Iteration.peakmem_itertuples_raw_start
- frame_methods.Iteration.peakmem_itertuples_start
- frame_methods.Iteration.time_iteritems_indexing (no item_cache overhead)
- frame_methods.ToDict.time_to_dict_datetimelike (no item_cache overhead)
- frame_methods.ToDict.time_to_dict_ints
- frame_methods.ToNumpy.time_to_numpy_tall
- frame_methods.ToNumpy.time_to_numpy_wide
- frame_methods.ToNumpy.time_values_tall
- frame_methods.ToNumpy.time_values_wide
- frame_methods.XS.time_frame_xs
- groupby.Fillna.time_srs_bfill
- groupby.Fillna.time_srs_ffill
- groupby.MultipleCategories.time_groupby_transform
- indexing.Block.time_test
- indexing.DataFrameNumericIndexing.time_loc
- dtype=<class 'numpy.float64'>; index_structure='nonunique_monotonic_inc'
- dtype=<class 'numpy.float64'>; index_structure='unique_monotonic_inc'
- dtype=<class 'numpy.int64'>; index_structure='nonunique_monotonic_inc'
- dtype=<class 'numpy.int64'>; index_structure='unique_monotonic_inc'
- dtype=<class 'numpy.uint64'>; index_structure='unique_monotonic_inc'
- indexing.DataFrameStringIndexing.time_at
- indexing.DataFrameStringIndexing.time_getitem_scalar
- indexing.DataFrameStringIndexing.time_loc
- indexing.GetItemSingleColumn.time_frame_getitem_single_column_int
- indexing.GetItemSingleColumn.time_frame_getitem_single_column_label
- indexing.SetitemObjectDtype.time_setitem_object_dtype
- reindex.DropDuplicates.time_frame_drop_dups_bool
- reshape.ReshapeExtensionDtype.time_stack
- reshape.ReshapeMaskedArrayDtype.time_stack
- reshape.Unstack.time_full_product -> CoW: Track references in unstack if there is no copy #57487
- reshape.Unstack.time_without_last_row
- rolling.EWMMethods.time_ewm
- constructor='Series'; kwargs_method=({'halflife': 1000}, 'mean'); dtype='float'
- constructor='Series'; kwargs_method=({'halflife': 1000}, 'mean'); dtype='int'
- constructor='Series'; kwargs_method=({'halflife': 10}, 'mean'); dtype='float'
- constructor='Series'; kwargs_method=({'halflife': 10}, 'mean'); dtype='int'
- series_methods.Fillna.time_fillna
- series_methods.ToNumpy.time_to_numpy
- series_methods.ToNumpy.time_to_numpy_float_with_nan
- sparse.ToCooFrame.time_to_coo
- stat_ops.Correlation.time_corr_series
- stat_ops.FrameOps.time_op -> PERF: DataFrame(ndarray) constructor ensure to copy to column-major layout #57459
- op='kurt'; dtype='Int64'; axis=0
- op='kurt'; dtype='float'; axis=0
- op='mean'; dtype='Int64'; axis=None
- op='mean'; dtype='float'; axis=0
- op='mean'; dtype='float'; axis=1
- op='prod'; dtype='float'; axis=0
- op='prod'; dtype='float'; axis=None
- op='sem'; dtype='float'; axis=0
- op='sem'; dtype='float'; axis=None
- op='skew'; dtype='float'; axis=0
- op='std'; dtype='Int64'; axis=0
- op='std'; dtype='Int64'; axis=None
- op='std'; dtype='float'; axis=0
- op='std'; dtype='float'; axis=None
- op='sum'; dtype='Int64'; axis=0
- op='sum'; dtype='Int64'; axis=None
- op='sum'; dtype='float'; axis=0
- op='sum'; dtype='float'; axis=1
- op='sum'; dtype='float'; axis=None
- op='var'; dtype='Int64'; axis=0
- op='var'; dtype='Int64'; axis=None
- op='var'; dtype='float'; axis=0
- op='var'; dtype='float'; axis=None
- strings.Construction.time_construction (Series constructor now has copy=True by default)
Subsequent benchmarks may have skipped some commits. The link below lists the commits that are between the two benchmark runs where the regression was identified.
cc @phofl