mirror of
https://github.com/wassname/catalyst.git
synced 2026-08-07 11:20:19 +08:00
BUG/PERF: Remove extra minute bar loader cache.
The minute history loader caching was incorrectly mimicking the daily history loader caching. Where caching the adjusted array on the last dt helps an access pattern of repeated calling history windows on the same day (which has an end_dt of the previous day), with minute windows the end dt is always moving forward, so the cached values are seldom used. (Would only be used if `history` was called with same parameters twice on the same simulation time.)
This commit is contained in:
committed by
Jean Bredeche
parent
4a1dd9967a
commit
d659a1d78c
@@ -516,16 +516,6 @@ class DataPortal(object):
|
||||
'price': None
|
||||
}
|
||||
self._equity_daily_reader_array_data = {}
|
||||
# See above comment for `_equity_daily_reader_array_keys`.
|
||||
self._equity_minute_loader_array_keys = {
|
||||
'open': None,
|
||||
'high': None,
|
||||
'low': None,
|
||||
'close': None,
|
||||
'volume': None,
|
||||
'price': None
|
||||
}
|
||||
self._equity_minute_loader_array_data = {}
|
||||
|
||||
def _reindex_extra_source(self, df, source_date_index):
|
||||
return df.reindex(index=source_date_index, method='ffill')
|
||||
@@ -1307,10 +1297,9 @@ class DataPortal(object):
|
||||
|
||||
def _get_minute_window_for_equities(
|
||||
self, assets, field, minutes_for_window):
|
||||
window = self._equity_minute_loader_arrays(field,
|
||||
minutes_for_window,
|
||||
assets)
|
||||
return window
|
||||
return self._equity_minute_history_loader.history(assets,
|
||||
minutes_for_window,
|
||||
field)
|
||||
|
||||
def _apply_all_adjustments(self, data, asset, dts, field,
|
||||
price_adj_factor=1.0):
|
||||
@@ -1393,20 +1382,6 @@ class DataPortal(object):
|
||||
self._equity_daily_reader_array_data[field] = data
|
||||
return data
|
||||
|
||||
def _equity_minute_loader_arrays(self, field, dts, assets):
|
||||
# Custom memoization, because of unhashable types.
|
||||
assets_key = frozenset(assets)
|
||||
key = (field, dts[0], dts[-1], assets_key)
|
||||
if self._equity_minute_loader_array_keys[field] == key:
|
||||
return self._equity_minute_loader_array_data[field]
|
||||
else:
|
||||
data = self._equity_minute_history_loader.history(assets,
|
||||
dts,
|
||||
field)
|
||||
self._equity_minute_loader_array_keys[field] = key
|
||||
self._equity_minute_loader_array_data[field] = data
|
||||
return data
|
||||
|
||||
def _get_daily_window_for_sids(
|
||||
self, assets, field, days_in_window, extra_slot=True):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user