diff --git a/asv_bench/benchmarks/attrs_caching.py b/asv_bench/benchmarks/attrs_caching.py index 501e27b9078ec..9c7b107b478d4 100644 --- a/asv_bench/benchmarks/attrs_caching.py +++ b/asv_bench/benchmarks/attrs_caching.py @@ -1,5 +1,6 @@ import numpy as np +import pandas as pd from pandas import DataFrame try: @@ -7,6 +8,11 @@ except ImportError: from pandas.util.decorators import cache_readonly +try: + from pandas.core.construction import extract_array +except ImportError: + extract_array = None + class DataFrameAttributes: def setup(self): @@ -20,6 +26,33 @@ def time_set_index(self): self.df.index = self.cur_index +class SeriesArrayAttribute: + + params = [["numeric", "object", "category", "datetime64", "datetime64tz"]] + param_names = ["dtype"] + + def setup(self, dtype): + if dtype == "numeric": + self.series = pd.Series([1, 2, 3]) + elif dtype == "object": + self.series = pd.Series(["a", "b", "c"], dtype=object) + elif dtype == "category": + self.series = pd.Series(["a", "b", "c"], dtype="category") + elif dtype == "datetime64": + self.series = pd.Series(pd.date_range("2013", periods=3)) + elif dtype == "datetime64tz": + self.series = pd.Series(pd.date_range("2013", periods=3, tz="UTC")) + + def time_array(self, dtype): + self.series.array + + def time_extract_array(self, dtype): + extract_array(self.series) + + def time_extract_array_numpy(self, dtype): + extract_array(self.series, extract_numpy=True) + + class CacheReadonly: def setup(self): class Foo: