Skip to content

Commit 3db2d02

Browse files
authored
ASV: tslibs.fields (pandas-dev#35149)
1 parent 0cef605 commit 3db2d02

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed

asv_bench/benchmarks/tslibs/fields.py

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
import numpy as np
2+
3+
from pandas._libs.tslibs.fields import (
4+
get_date_field,
5+
get_start_end_field,
6+
get_timedelta_field,
7+
)
8+
9+
from .tslib import _sizes
10+
11+
12+
class TimeGetTimedeltaField:
13+
params = [
14+
_sizes,
15+
["days", "h", "s", "seconds", "ms", "microseconds", "us", "ns", "nanoseconds"],
16+
]
17+
param_names = ["size", "field"]
18+
19+
def setup(self, size, field):
20+
arr = np.random.randint(0, 10, size=size, dtype="i8")
21+
self.i8data = arr
22+
23+
def time_get_timedelta_field(self, size, field):
24+
get_timedelta_field(self.i8data, field)
25+
26+
27+
class TimeGetDateField:
28+
params = [
29+
_sizes,
30+
[
31+
"Y",
32+
"M",
33+
"D",
34+
"h",
35+
"m",
36+
"s",
37+
"us",
38+
"ns",
39+
"doy",
40+
"dow",
41+
"woy",
42+
"q",
43+
"dim",
44+
"is_leap_year",
45+
],
46+
]
47+
param_names = ["size", "field"]
48+
49+
def setup(self, size, field):
50+
arr = np.random.randint(0, 10, size=size, dtype="i8")
51+
self.i8data = arr
52+
53+
def time_get_date_field(self, size, field):
54+
get_date_field(self.i8data, field)
55+
56+
57+
class TimeGetStartEndField:
58+
params = [
59+
_sizes,
60+
["start", "end"],
61+
["month", "quarter", "year"],
62+
["B", None, "QS"],
63+
[12, 3, 5],
64+
]
65+
param_names = ["size", "side", "period", "freqstr", "month_kw"]
66+
67+
def setup(self, size, side, period, freqstr, month_kw):
68+
arr = np.random.randint(0, 10, size=size, dtype="i8")
69+
self.i8data = arr
70+
71+
self.attrname = f"is_{period}_{side}"
72+
73+
def time_get_start_end_field(self, size, side, period, freqstr, month_kw):
74+
get_start_end_field(self.i8data, self.attrname, freqstr, month_kw=month_kw)

0 commit comments

Comments
 (0)