Skip to content

Commit 7716a8a

Browse files
committed
PERF: add benchmarks that iterate over str vs offset period frequencies
1 parent 80295f9 commit 7716a8a

File tree

1 file changed

+31
-7
lines changed

1 file changed

+31
-7
lines changed

asv_bench/benchmarks/period.py

+31-7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from pandas import (
22
DataFrame, Period, PeriodIndex, Series, date_range, period_range)
3+
from pandas.tseries.frequencies import to_offset
34

45

56
class PeriodProperties(object):
@@ -35,25 +36,48 @@ def time_asfreq(self, freq):
3536
self.per.asfreq('A')
3637

3738

39+
class PeriodConstructor(object):
40+
params = [['D'], [True, False]]
41+
param_names = ['freq', 'is_offset']
42+
43+
def setup(self, freq, is_offset):
44+
if is_offset:
45+
self.freq = to_offset(freq)
46+
else:
47+
self.freq = freq
48+
49+
def time_period_constructor(self, freq, is_offset):
50+
Period('2012-06-01', freq=freq)
51+
52+
3853
class PeriodIndexConstructor(object):
3954

40-
params = ['D']
41-
param_names = ['freq']
55+
params = [['D'], [True, False]]
56+
param_names = ['freq', 'is_offset']
4257

43-
def setup(self, freq):
58+
def setup(self, freq, is_offset):
4459
self.rng = date_range('1985', periods=1000)
4560
self.rng2 = date_range('1985', periods=1000).to_pydatetime()
4661
self.ints = list(range(2000, 3000))
47-
48-
def time_from_date_range(self, freq):
62+
self.daily_ints = date_range('1/1/2000', periods=1000,
63+
freq=freq).strftime('%Y%m%d').map(int)
64+
if is_offset:
65+
self.freq = to_offset(freq)
66+
else:
67+
self.freq = freq
68+
69+
def time_from_date_range(self, freq, is_offset):
4970
PeriodIndex(self.rng, freq=freq)
5071

51-
def time_from_pydatetime(self, freq):
72+
def time_from_pydatetime(self, freq, is_offset):
5273
PeriodIndex(self.rng2, freq=freq)
5374

54-
def time_from_ints(self, freq):
75+
def time_from_ints(self, freq, is_offset):
5576
PeriodIndex(self.ints, freq=freq)
5677

78+
def time_from_ints_daily(self, freq, is_offset):
79+
PeriodIndex(self.daily_ints, freq=freq)
80+
5781

5882
class DataFramePeriodColumn(object):
5983

0 commit comments

Comments
 (0)