perf: skip unused standard rolling lookup
This commit is contained in:
@@ -2061,10 +2061,18 @@ impl DataSet {
|
|||||||
volume_lookbacks: &[usize; 5],
|
volume_lookbacks: &[usize; 5],
|
||||||
include_now: bool,
|
include_now: bool,
|
||||||
) -> StandardRollingMeans {
|
) -> StandardRollingMeans {
|
||||||
|
let close_required = close_lookbacks.iter().any(|lookback| *lookback > 0);
|
||||||
|
let volume_required = volume_lookbacks.iter().any(|lookback| *lookback > 0);
|
||||||
|
if !close_required && !volume_required {
|
||||||
|
return StandardRollingMeans {
|
||||||
|
close: [None; 7],
|
||||||
|
volume: [None; 5],
|
||||||
|
};
|
||||||
|
}
|
||||||
// Both series are built from the same market-date sequence. Reuse the
|
// Both series are built from the same market-date sequence. Reuse the
|
||||||
// indexed boundary lookup instead of repeating it for close and volume.
|
// indexed boundary lookup instead of repeating it for close and volume.
|
||||||
let series_end = self.market_series_end_index_by_symbol_id(date, symbol_id, include_now);
|
let series_end = self.market_series_end_index_by_symbol_id(date, symbol_id, include_now);
|
||||||
let close = if close_lookbacks.iter().any(|lookback| *lookback > 0) {
|
let close = if close_required {
|
||||||
self.adjusted_close_series_by_symbol_id(symbol_id)
|
self.adjusted_close_series_by_symbol_id(symbol_id)
|
||||||
.map(|series| {
|
.map(|series| {
|
||||||
series_end
|
series_end
|
||||||
@@ -2077,7 +2085,7 @@ impl DataSet {
|
|||||||
} else {
|
} else {
|
||||||
[None; 7]
|
[None; 7]
|
||||||
};
|
};
|
||||||
let volume = if volume_lookbacks.iter().any(|lookback| *lookback > 0) {
|
let volume = if volume_required {
|
||||||
self.market_series_by_symbol_id(symbol_id)
|
self.market_series_by_symbol_id(symbol_id)
|
||||||
.map(|series| {
|
.map(|series| {
|
||||||
series_end
|
series_end
|
||||||
|
|||||||
Reference in New Issue
Block a user