Make DateOffset.kwds a property by jbrockmendel · Pull Request #19403 · pandas-dev/pandas (original) (raw)
Returning to an older goal of making DateOffset immutable, this PR moves towards getting rid of DateOffset.kwds by making it a property instead of regular attribute. This uses the _get_attributes_dict pattern, albeit without actually using a _get_attributes_dict method.
I expect this to entail a small perf penalty since lookups are slower, but that's small potatoes next to the speedups we'll get from caching once these are immutable.
asv continuous -E virtualenv -f 1.1 master HEAD -b offset -b timeseries
[...]
before after ratio
[d3f7d2a6] [fe7a7187]
+ 11.46μs 41.89μs 3.66 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<DateOffset: kwds={'months': 2, 'days': 2}>)
+ 2.03ms 5.53ms 2.72 timeseries.ResampleSeries.time_resample('datetime', '5min', 'mean')
+ 2.15ms 4.68ms 2.17 timeseries.ResampleSeries.time_resample('datetime', '1D', 'ohlc')
+ 14.36μs 29.72μs 2.07 offset.OffestDatetimeArithmetic.time_add_10(<YearEnd: month=12>)
+ 2.56ms 4.42ms 1.73 timeseries.ToDatetimeCache.time_dup_string_tzoffset_dates(True)
+ 11.83μs 18.85μs 1.59 offset.OffestDatetimeArithmetic.time_add(<DateOffset: kwds={'months': 2, 'days': 2}>)
+ 9.60μs 14.96μs 1.56 offset.OffestDatetimeArithmetic.time_apply(<DateOffset: kwds={'months': 2, 'days': 2}>)
+ 28.55μs 42.49μs 1.49 offset.OffestDatetimeArithmetic.time_subtract(<DateOffset: kwds={'months': 2, 'days': 2}>)
+ 12.76μs 18.56μs 1.45 offset.OffestDatetimeArithmetic.time_add(<BusinessYearEnd: month=12>)
+ 7.69μs 10.75μs 1.40 timeseries.AsOf.time_asof_single_early('Series')
+ 8.71ms 11.63ms 1.34 timeseries.ResampleSeries.time_resample('period', '5min', 'mean')
+ 15.21μs 20.20μs 1.33 offset.OffestDatetimeArithmetic.time_add_10(<MonthEnd>)
+ 14.20μs 18.47μs 1.30 offset.OffestDatetimeArithmetic.time_add_10(<BusinessQuarterEnd: startingMonth=3>)
+ 17.44μs 21.72μs 1.25 offset.OffestDatetimeArithmetic.time_subtract_10(<SemiMonthBegin: day_of_month=15>)
+ 11.22μs 13.54μs 1.21 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<YearEnd: month=12>)
+ 13.63μs 16.37μs 1.20 offset.OffestDatetimeArithmetic.time_subtract(<BusinessMonthBegin>)
+ 10.22μs 12.27μs 1.20 offset.OffestDatetimeArithmetic.time_apply(<BusinessDay>)
+ 65.62μs 78.64μs 1.20 offset.OffestDatetimeArithmetic.time_add_10(<DateOffset: kwds={'months': 2, 'days': 2}>)
+ 14.46μs 17.28μs 1.19 offset.OffestDatetimeArithmetic.time_subtract(<QuarterBegin: startingMonth=3>)
+ 16.11μs 19.14μs 1.19 offset.OffestDatetimeArithmetic.time_subtract(<BusinessDay>)
+ 16.31μs 19.07μs 1.17 offset.OffestDatetimeArithmetic.time_subtract_10(<BusinessYearBegin: month=1>)
+ 2.35ms 2.73ms 1.16 timeseries.DatetimeIndex.time_unique('tz_naive')
+ 15.43μs 17.89μs 1.16 offset.OffestDatetimeArithmetic.time_subtract_10(<BusinessMonthBegin>)
+ 10.68μs 12.38μs 1.16 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<MonthEnd>)
+ 10.57μs 12.24μs 1.16 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<BusinessMonthEnd>)
+ 14.26μs 16.48μs 1.16 offset.OffestDatetimeArithmetic.time_add_10(<MonthBegin>)
+ 121.98μs 140.64μs 1.15 offset.OffestDatetimeArithmetic.time_subtract_10(<DateOffset: kwds={'months': 2, 'days': 2}>)
+ 16.60μs 19.11μs 1.15 offset.OffestDatetimeArithmetic.time_subtract_10(<BusinessYearEnd: month=12>)
+ 15.66μs 18.00μs 1.15 offset.OffestDatetimeArithmetic.time_subtract(<YearEnd: month=12>)
+ 16.78μs 19.25μs 1.15 offset.OffestDatetimeArithmetic.time_subtract(<SemiMonthEnd: day_of_month=15>)
+ 13.87μs 15.89μs 1.15 offset.OffestDatetimeArithmetic.time_add_10(<BusinessYearEnd: month=12>)
+ 14.96μs 17.13μs 1.14 offset.OffestDatetimeArithmetic.time_subtract(<BusinessQuarterBegin: startingMonth=3>)
+ 15.27μs 17.43μs 1.14 offset.OffestDatetimeArithmetic.time_subtract_10(<BusinessMonthEnd>)
+ 12.88μs 14.66μs 1.14 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<BusinessDay>)
+ 251.65μs 285.47μs 1.13 offset.OffsetDatetimeIndexArithmetic.time_add_offset(<BusinessQuarterEnd: startingMonth=3>)
+ 13.84μs 15.66μs 1.13 offset.OffestDatetimeArithmetic.time_add_10(<YearBegin: month=1>)
+ 14.68ms 16.59ms 1.13 timeseries.DatetimeIndex.time_to_time('tz_naive')
+ 16.66μs 18.79μs 1.13 offset.OffestDatetimeArithmetic.time_subtract_10(<YearEnd: month=12>)
+ 10.00μs 11.19μs 1.12 offset.OffestDatetimeArithmetic.time_apply(<BusinessYearBegin: month=1>)
+ 10.30μs 11.50μs 1.12 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<BusinessYearEnd: month=12>)
+ 17.44μs 19.47μs 1.12 offset.OffestDatetimeArithmetic.time_subtract(<SemiMonthBegin: day_of_month=15>)
+ 18.07μs 20.13μs 1.11 offset.OffestDatetimeArithmetic.time_add_10(<SemiMonthEnd: day_of_month=15>)
+ 18.09μs 20.08μs 1.11 offset.OffestDatetimeArithmetic.time_add(<CustomBusinessDay>)
+ 14.65μs 16.26μs 1.11 offset.OffestDatetimeArithmetic.time_add_10(<BusinessMonthEnd>)
+ 5.32ms 5.91ms 1.11 offset.OffsetDatetimeIndexArithmetic.time_add_offset(<SemiMonthBegin: day_of_month=15>)
+ 11.54μs 12.80μs 1.11 offset.OffestDatetimeArithmetic.time_add(<MonthBegin>)
+ 12.23μs 13.55μs 1.11 offset.OffestDatetimeArithmetic.time_add(<BusinessQuarterEnd: startingMonth=3>)
+ 15.25μs 16.87μs 1.11 offset.OffestDatetimeArithmetic.time_subtract_10(<MonthEnd>)
+ 17.78μs 19.66μs 1.11 offset.OffestDatetimeArithmetic.time_subtract_10(<BusinessDay>)
+ 18.13μs 20.05μs 1.11 offset.OffestDatetimeArithmetic.time_subtract_10(<BusinessQuarterEnd: startingMonth=3>)
+ 21.89μs 24.19μs 1.10 offset.OffestDatetimeArithmetic.time_subtract_10(<Day>)
+ 9.94μs 10.97μs 1.10 offset.OffestDatetimeArithmetic.time_apply(<SemiMonthEnd: day_of_month=15>)
+ 10.74μs 11.85μs 1.10 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<BusinessYearBegin: month=1>)
+ 18.51μs 20.39μs 1.10 offset.OffestDatetimeArithmetic.time_subtract_10(<SemiMonthEnd: day_of_month=15>)
+ 39.52ms 43.52ms 1.10 timeseries.Factorize.time_factorize('Asia/Tokyo')
- 16.22μs 14.75μs 0.91 offset.OffestDatetimeArithmetic.time_add_10(<QuarterBegin: startingMonth=3>)
- 73.13ms 65.36ms 0.89 timeseries.ToDatetimeCache.time_dup_string_tzoffset_dates(False)
- 13.39μs 11.60μs 0.87 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<BusinessQuarterBegin: startingMonth=3>)
- 25.04μs 21.37μs 0.85 offset.OffestDatetimeArithmetic.time_add_10(<Day>)
- 14.25μs 11.66μs 0.82 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<QuarterEnd: startingMonth=3>)
- 44.47ms 34.93ms 0.79 timeseries.Factorize.time_factorize(None)
- 1.98ms 1.45ms 0.73 timeseries.ToDatetimeCache.time_dup_string_dates(False)
- 4.23ms 1.69ms 0.40 timeseries.ResampleSeries.time_resample('datetime', '1D', 'mean')
asv continuous -E virtualenv -f 1.1 master HEAD -b offset -b timeseries
[...]
+ 17.01μs 35.30μs 2.08 offset.OffestDatetimeArithmetic.time_subtract_10(<BusinessQuarterBegin: startingMonth=3>)
+ 3.02ms 4.90ms 1.62 timeseries.AsOf.time_asof_nan_single('DataFrame')
+ 77.45ms 124.97ms 1.61 timeseries.Factorize.time_factorize('Asia/Tokyo')
+ 12.33μs 19.34μs 1.57 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<DateOffset: days=2, months=2>)
+ 9.65μs 14.70μs 1.52 offset.OffestDatetimeArithmetic.time_apply(<DateOffset: days=2, months=2>)
+ 11.65μs 17.30μs 1.48 offset.OffestDatetimeArithmetic.time_add(<DateOffset: days=2, months=2>)
+ 27.81μs 40.60μs 1.46 offset.OffestDatetimeArithmetic.time_subtract(<DateOffset: days=2, months=2>)
+ 71.60μs 91.28μs 1.27 offset.OffestDatetimeArithmetic.time_add(<CustomBusinessMonthEnd>)
+ 92.47μs 113.39μs 1.23 offset.OffestDatetimeArithmetic.time_subtract(<CustomBusinessMonthBegin>)
+ 18.89μs 23.02μs 1.22 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<Day>)
+ 10.49μs 12.66μs 1.21 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<BusinessMonthBegin>)
+ 16.88μs 20.14μs 1.19 offset.OffestDatetimeArithmetic.time_subtract(<SemiMonthEnd: day_of_month=15>)
+ 15.45μs 18.27μs 1.18 offset.OffestDatetimeArithmetic.time_add_10(<QuarterEnd: startingMonth=3>)
+ 8.37μs 9.90μs 1.18 offset.OffestDatetimeArithmetic.time_apply(<MonthBegin>)
+ 62.24μs 73.22μs 1.18 offset.OffestDatetimeArithmetic.time_add_10(<DateOffset: days=2, months=2>)
+ 21.38μs 24.98μs 1.17 offset.OffestDatetimeArithmetic.time_add_10(<Day>)
+ 16.28μs 18.91μs 1.16 offset.OffestDatetimeArithmetic.time_subtract_10(<QuarterBegin: startingMonth=3>)
+ 12.20μs 14.11μs 1.16 offset.OffestDatetimeArithmetic.time_add(<BusinessQuarterEnd: startingMonth=3>)
+ 11.51μs 13.30μs 1.16 offset.OffestDatetimeArithmetic.time_add(<BusinessYearBegin: month=1>)
+ 12.89μs 14.83μs 1.15 offset.OffestDatetimeArithmetic.time_add(<SemiMonthBegin: day_of_month=15>)
+ 14.39μs 16.51μs 1.15 offset.OffestDatetimeArithmetic.time_add_10(<QuarterBegin: startingMonth=3>)
+ 10.50μs 12.03μs 1.15 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<YearEnd: month=12>)
+ 2.32ms 2.66ms 1.14 timeseries.DatetimeIndex.time_unique('tz_naive')
+ 15.92μs 18.08μs 1.14 offset.OffestDatetimeArithmetic.time_subtract_10(<BusinessMonthEnd>)
+ 123.41μs 140.13μs 1.14 offset.OffestDatetimeArithmetic.time_subtract_10(<DateOffset: days=2, months=2>)
+ 71.20ms 80.52ms 1.13 offset.OffsetSeriesArithmetic.time_add_offset(<CustomBusinessMonthEnd>)
+ 17.68μs 19.89μs 1.13 offset.OffestDatetimeArithmetic.time_subtract_10(<BusinessYearBegin: month=1>)
+ 15.36μs 17.23μs 1.12 offset.OffestDatetimeArithmetic.time_subtract_10(<MonthBegin>)
+ 15.98μs 17.82μs 1.12 offset.OffestDatetimeArithmetic.time_add_10(<SemiMonthBegin: day_of_month=15>)
+ 14.64μs 16.31μs 1.11 offset.OffestDatetimeArithmetic.time_add_10(<BusinessMonthEnd>)
+ 8.96μs 9.94μs 1.11 offset.OffestDatetimeArithmetic.time_apply(<BusinessYearEnd: month=12>)
+ 17.27μs 19.16μs 1.11 offset.OffestDatetimeArithmetic.time_subtract_10(<YearEnd: month=12>)
+ 14.44μs 16.01μs 1.11 offset.OffestDatetimeArithmetic.time_subtract(<BusinessYearBegin: month=1>)
+ 15.26μs 16.90μs 1.11 offset.OffestDatetimeArithmetic.time_add_10(<BusinessDay>)
+ 14.19μs 15.70μs 1.11 offset.OffestDatetimeArithmetic.time_subtract(<MonthBegin>)
+ 13.72μs 15.16μs 1.11 offset.OffestDatetimeArithmetic.time_add_10(<MonthEnd>)
+ 127.38μs 140.62μs 1.10 offset.OffestDatetimeArithmetic.time_add_10(<CustomBusinessMonthBegin>)
+ 13.77μs 15.20μs 1.10 offset.OffestDatetimeArithmetic.time_subtract(<BusinessMonthEnd>)
- 17.66μs 15.89μs 0.90 offset.OffestDatetimeArithmetic.time_subtract_10(<MonthEnd>)
- 4.07ms 3.66ms 0.90 timeseries.ToDatetimeISO8601.time_iso8601_nosep
- 25.01μs 22.41μs 0.90 offset.OffestDatetimeArithmetic.time_subtract_10(<Day>)
- 11.44μs 10.22μs 0.89 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<MonthEnd>)
- 18.64μs 16.19μs 0.87 timeseries.AsOf.time_asof_single('Series')
- 92.96ms 77.71ms 0.84 timeseries.Factorize.time_factorize(None)
- 23.06μs 19.02μs 0.83 offset.OffestDatetimeArithmetic.time_subtract_10(<BusinessYearEnd: month=12>)
- 13.05μs 10.37μs 0.79 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<YearBegin: month=1>)
- 23.95μs 14.14μs 0.59 offset.OffestDatetimeArithmetic.time_add(<MonthBegin>)
- 444.49μs 260.00μs 0.58 offset.OffsetDatetimeIndexArithmetic.time_add_offset(<BusinessYearEnd: month=12>)
- 4.31ms 2.46ms 0.57 timeseries.ToDatetimeCache.time_unique_seconds_and_unit(False)
- 21.43μs 11.69μs 0.55 offset.OffestDatetimeArithmetic.time_apply(<BusinessDay>)
asv continuous -E virtualenv -f 1.1 master HEAD -b offset -b timeseries
[...]
before after ratio
[d3f7d2a6] [fe7a7187]
+ 16.58μs 26.15μs 1.58 offset.OffestDatetimeArithmetic.time_subtract(<BusinessQuarterEnd: startingMonth=3>)
+ 9.75μs 14.73μs 1.51 offset.OffestDatetimeArithmetic.time_apply(<DateOffset: days=2, months=2>)
+ 12.16μs 18.11μs 1.49 offset.OffestDatetimeArithmetic.time_add(<DateOffset: days=2, months=2>)
+ 12.21μs 17.69μs 1.45 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<DateOffset: days=2, months=2>)
+ 28.97μs 40.89μs 1.41 offset.OffestDatetimeArithmetic.time_subtract(<DateOffset: days=2, months=2>)
+ 1.63ms 2.25ms 1.38 timeseries.ResampleSeries.time_resample('datetime', '1D', 'mean')
+ 14.71μs 20.02μs 1.36 offset.OffestDatetimeArithmetic.time_subtract(<BusinessYearBegin: month=1>)
+ 14.63μs 19.70μs 1.35 offset.OffestDatetimeArithmetic.time_subtract(<BusinessMonthBegin>)
+ 19.52μs 26.26μs 1.35 offset.OffestDatetimeArithmetic.time_add(<CustomBusinessDay>)
+ 22.16ms 29.79ms 1.34 offset.OffsetSeriesArithmetic.time_add_offset(<CustomBusinessDay>)
+ 20.69ms 26.91ms 1.30 timeseries.IrregularOps.time_add
+ 16.77μs 20.77μs 1.24 offset.OffestDatetimeArithmetic.time_subtract(<SemiMonthEnd: day_of_month=15>)
+ 15.76μs 19.40μs 1.23 offset.OffestDatetimeArithmetic.time_subtract_10(<MonthBegin>)
+ 17.31μs 21.15μs 1.22 offset.OffestDatetimeArithmetic.time_subtract_10(<QuarterBegin: startingMonth=3>)
+ 15.31μs 18.65μs 1.22 offset.OffestDatetimeArithmetic.time_subtract(<BusinessQuarterBegin: startingMonth=3>)
+ 14.71μs 17.75μs 1.21 offset.OffestDatetimeArithmetic.time_add_10(<YearBegin: month=1>)
+ 15.88μs 19.10μs 1.20 offset.OffestDatetimeArithmetic.time_subtract(<BusinessDay>)
+ 6.38ms 7.55ms 1.18 timeseries.AsOf.time_asof('DataFrame')
+ 16.25μs 18.97μs 1.17 offset.OffestDatetimeArithmetic.time_subtract_10(<BusinessQuarterEnd: startingMonth=3>)
+ 66.50μs 76.79μs 1.15 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<CustomBusinessMonthEnd>)
+ 19.02μs 21.70μs 1.14 offset.OffestDatetimeArithmetic.time_add(<Day>)
+ 13.95μs 15.83μs 1.13 offset.OffestDatetimeArithmetic.time_subtract(<MonthEnd>)
+ 18.43μs 20.88μs 1.13 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<Day>)
+ 64.88μs 72.92μs 1.12 offset.OffestDatetimeArithmetic.time_add_10(<DateOffset: days=2, months=2>)
+ 12.91μs 14.43μs 1.12 offset.OffestDatetimeArithmetic.time_add(<QuarterEnd: startingMonth=3>)
+ 15.23μs 16.99μs 1.12 offset.OffestDatetimeArithmetic.time_add_10(<BusinessDay>)
+ 13.70μs 15.24μs 1.11 offset.OffestDatetimeArithmetic.time_add_10(<YearEnd: month=12>)
+ 131.58μs 145.99μs 1.11 offset.OffestDatetimeArithmetic.time_subtract_10(<DateOffset: days=2, months=2>)
+ 11.07μs 12.26μs 1.11 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<BusinessQuarterBegin: startingMonth=3>)
+ 11.14μs 12.34μs 1.11 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<MonthBegin>)
+ 11.60μs 12.84μs 1.11 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<BusinessMonthEnd>)
+ 2.44ms 2.70ms 1.11 timeseries.DatetimeIndex.time_unique('tz_naive')
+ 15.79μs 17.46μs 1.11 offset.OffestDatetimeArithmetic.time_subtract_10(<BusinessMonthEnd>)
+ 21.47μs 23.70μs 1.10 offset.OffestDatetimeArithmetic.time_subtract(<Day>)
+ 10.57μs 11.64μs 1.10 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<BusinessMonthBegin>)
+ 2.98μs 3.28μs 1.10 timeseries.DatetimeIndex.time_get('repeated')
- 10.04μs 9.07μs 0.90 offset.OffestDatetimeArithmetic.time_apply(<BusinessMonthBegin>)
- 12.54μs 11.29μs 0.90 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<YearEnd: month=12>)
- 10.30μs 9.25μs 0.90 offset.OffestDatetimeArithmetic.time_apply(<QuarterBegin: startingMonth=3>)
- 16.50μs 14.67μs 0.89 offset.OffestDatetimeArithmetic.time_add_10(<QuarterEnd: startingMonth=3>)
- 8.11ms 6.98ms 0.86 timeseries.Factorize.time_factorize(None)
- 7.85ms 6.72ms 0.86 timeseries.Factorize.time_factorize('Asia/Tokyo')
- 20.75μs 13.16μs 0.63 offset.OffestDatetimeArithmetic.time_add(<MonthEnd>)
- 2.00ms 1.21ms 0.60 timeseries.ResampleDataFrame.time_method('mean')
- 3.99ms 2.34ms 0.59 timeseries.ToDatetimeCache.time_dup_string_dates(True)
- 19.81μs 11.38μs 0.57 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<BusinessYearBegin: month=1>)
- 30.71μs 12.91μs 0.42 offset.OffestDatetimeArithmetic.time_add(<BusinessQuarterEnd: startingMonth=3>)
asv continuous -E virtualenv -f 1.1 master HEAD -b offset -b timeseries
[...]
before after ratio
[d3f7d2a6] [fe7a7187]
+ 13.89μs 26.44μs 1.90 offset.OffestDatetimeArithmetic.time_add(<BusinessMonthEnd>)
+ 9.67μs 15.55μs 1.61 offset.OffestDatetimeArithmetic.time_apply(<DateOffset: days=2, months=2>)
+ 11.64μs 17.55μs 1.51 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<DateOffset: days=2, months=2>)
+ 12.28μs 17.62μs 1.43 offset.OffestDatetimeArithmetic.time_add(<DateOffset: days=2, months=2>)
+ 30.04μs 40.47μs 1.35 offset.OffestDatetimeArithmetic.time_subtract(<DateOffset: days=2, months=2>)
+ 14.31μs 17.84μs 1.25 offset.OffestDatetimeArithmetic.time_subtract(<YearBegin: month=1>)
+ 14.24μs 17.55μs 1.23 offset.OffestDatetimeArithmetic.time_add_10(<QuarterBegin: startingMonth=3>)
+ 16.80μs 20.62μs 1.23 offset.OffestDatetimeArithmetic.time_add_10(<SemiMonthEnd: day_of_month=15>)
+ 15.42μs 18.40μs 1.19 offset.OffestDatetimeArithmetic.time_subtract_10(<MonthBegin>)
+ 61.16μs 72.26μs 1.18 offset.OffestDatetimeArithmetic.time_add_10(<DateOffset: days=2, months=2>)
+ 14.30μs 16.82μs 1.18 offset.OffestDatetimeArithmetic.time_add_10(<BusinessQuarterEnd: startingMonth=3>)
+ 14.67μs 17.24μs 1.18 offset.OffestDatetimeArithmetic.time_add_10(<QuarterEnd: startingMonth=3>)
+ 9.54μs 11.21μs 1.17 offset.OffestDatetimeArithmetic.time_apply(<QuarterEnd: startingMonth=3>)
+ 17.11μs 20.00μs 1.17 offset.OffestDatetimeArithmetic.time_subtract_10(<QuarterBegin: startingMonth=3>)
+ 15.54μs 18.01μs 1.16 offset.OffestDatetimeArithmetic.time_apply(<CustomBusinessDay>)
+ 10.34μs 11.95μs 1.16 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<MonthEnd>)
+ 123.20μs 141.04μs 1.14 offset.OffestDatetimeArithmetic.time_subtract_10(<DateOffset: days=2, months=2>)
+ 13.93μs 15.85μs 1.14 offset.OffestDatetimeArithmetic.time_add_10(<YearBegin: month=1>)
+ 11.39μs 12.85μs 1.13 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<YearEnd: month=12>)
+ 16.79μs 18.84μs 1.12 offset.OffestDatetimeArithmetic.time_subtract_10(<QuarterEnd: startingMonth=3>)
+ 2.35ms 2.64ms 1.12 timeseries.DatetimeIndex.time_unique('tz_naive')
+ 4.16μs 4.67μs 1.12 timeseries.DatetimeIndex.time_get('dst')
+ 6.03μs 6.73μs 1.12 timeseries.DatetimeIndex.time_get('tz_aware')
+ 16.77μs 18.74μs 1.12 offset.OffestDatetimeArithmetic.time_add_10(<BusinessDay>)
+ 10.47μs 11.69μs 1.12 offset.OffestDatetimeArithmetic.time_apply(<BusinessDay>)
+ 12.36μs 13.67μs 1.11 offset.OffestDatetimeArithmetic.time_add(<YearBegin: month=1>)
+ 9.49μs 10.49μs 1.11 offset.OffestDatetimeArithmetic.time_apply(<BusinessQuarterEnd: startingMonth=3>)
+ 105.28μs 116.31μs 1.10 offset.OffestDatetimeArithmetic.time_apply(<CustomBusinessMonthBegin>)
+ 18.86μs 20.84μs 1.10 offset.OffestDatetimeArithmetic.time_subtract_10(<SemiMonthEnd: day_of_month=15>)
+ 14.58μs 16.07μs 1.10 offset.OffestDatetimeArithmetic.time_subtract(<MonthBegin>)
- 4.33ms 3.93ms 0.91 offset.OnOffset.time_on_offset(<CustomBusinessMonthBegin>)
- 2.30ms 2.05ms 0.89 timeseries.ResampleSeries.time_resample('datetime', '1D', 'ohlc')
- 148.28ms 131.47ms 0.89 timeseries.DatetimeIndex.time_to_pydatetime('tz_aware')
- 10.14μs 8.93μs 0.88 offset.OffestDatetimeArithmetic.time_apply(<MonthEnd>)
- 13.64μs 11.91μs 0.87 offset.OffestDatetimeArithmetic.time_apply_np_dt64(<SemiMonthBegin: day_of_month=15>)
- 32.12μs 27.72μs 0.86 offset.OffestDatetimeArithmetic.time_add_10(<CustomBusinessDay>)
- 16.82μs 13.94μs 0.83 offset.OffestDatetimeArithmetic.time_add_10(<MonthEnd>)
- 3.27μs 2.59μs 0.79 timeseries.DatetimeIndex.time_get('repeated')
- 313.89μs 235.57μs 0.75 offset.OffsetDatetimeIndexArithmetic.time_add_offset(<QuarterEnd: startingMonth=3>)
- 23.48μs 15.20μs 0.65 offset.OffestDatetimeArithmetic.time_add(<BusinessYearEnd: month=12>)
- 3.96ms 2.55ms 0.64 timeseries.ResampleSeries.time_resample('period', '5min', 'ohlc')
- 23.80μs 13.81μs 0.58 offset.OffestDatetimeArithmetic.time_add(<BusinessDay>)
- 3.13ms 1.45ms 0.46 timeseries.ToDatetimeCache.time_dup_string_dates(False)