Skip to content

Commit 210538e

Browse files
committed
PERF: add benchmarks that iterate over str vs offset period frequencies
1 parent 8ea7744 commit 210538e

File tree

1 file changed

+24
-6
lines changed

1 file changed

+24
-6
lines changed

asv_bench/benchmarks/period.py

Lines changed: 24 additions & 6 deletions
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,24 +35,41 @@ 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+
if is_offset:
62+
self.freq = to_offset(freq)
63+
else:
64+
self.freq = freq
4765

48-
def time_from_date_range(self, freq):
66+
def time_from_date_range(self, freq, is_offset):
4967
PeriodIndex(self.rng, freq=freq)
5068

51-
def time_from_pydatetime(self, freq):
69+
def time_from_pydatetime(self, freq, is_offset):
5270
PeriodIndex(self.rng2, freq=freq)
5371

54-
def time_from_ints(self, freq):
72+
def time_from_ints(self, freq, is_offset):
5573
PeriodIndex(self.ints, freq=freq)
5674

5775

0 commit comments

Comments
 (0)