perf: skip unused standard rolling lookup

This commit is contained in:
boris
2026-09-04 22:55:03 +08:00
parent 47d1520d72
commit 914820cc07
+10 -2
View File
@@ -2061,10 +2061,18 @@ impl DataSet {
volume_lookbacks: &[usize; 5],
include_now: bool,
) -> 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
// 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 close = if close_lookbacks.iter().any(|lookback| *lookback > 0) {
let close = if close_required {
self.adjusted_close_series_by_symbol_id(symbol_id)
.map(|series| {
series_end
@@ -2077,7 +2085,7 @@ impl DataSet {
} else {
[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)
.map(|series| {
series_end