Skip to content

Commit ba1bc19

Browse files
committed
PERF: add benchmarks that iterate over str vs offset period frequencies
1 parent 3086e0a commit ba1bc19

File tree

1 file changed

+28
-6
lines changed

1 file changed

+28
-6
lines changed

asv_bench/benchmarks/period.py

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

45

56
class PeriodProperties(object):
@@ -34,26 +35,47 @@ def time_now(self, freq):
3435
def time_asfreq(self, freq):
3536
self.per.asfreq('A')
3637

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

3852
class PeriodIndexConstructor(object):
3953

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

43-
def setup(self, freq):
57+
def setup(self, freq, is_offset):
4458
self.rng = date_range('1985', periods=1000)
4559
self.rng2 = date_range('1985', periods=1000).to_pydatetime()
4660
self.ints = list(range(2000, 3000))
61+
self.daily_ints = date_range('1/1/2000', periods=1000, freq=freq).strftime('%Y%m%d').map(int)
62+
if is_offset:
63+
self.freq = to_offset(freq)
64+
else:
65+
self.freq = freq
4766

48-
def time_from_date_range(self, freq):
67+
def time_from_date_range(self, freq, is_offset):
4968
PeriodIndex(self.rng, freq=freq)
5069

51-
def time_from_pydatetime(self, freq):
70+
def time_from_pydatetime(self, freq, is_offset):
5271
PeriodIndex(self.rng2, freq=freq)
5372

54-
def time_from_ints(self, freq):
73+
def time_from_ints(self, freq, is_offset):
5574
PeriodIndex(self.ints, freq=freq)
5675

76+
def time_from_ints_daily(self, freq, is_offset):
77+
PeriodIndex(self.daily_ints, freq=freq)
78+
5779

5880
class DataFramePeriodColumn(object):
5981

0 commit comments

Comments
 (0)