From 914820cc072c1783a8285aba524d829613e44380 Mon Sep 17 00:00:00 2001 From: boris Date: Fri, 4 Sep 2026 22:55:03 +0800 Subject: [PATCH] perf: skip unused standard rolling lookup --- crates/fidc-core/src/data.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/crates/fidc-core/src/data.rs b/crates/fidc-core/src/data.rs index 33d3ec4..1dfd4e7 100644 --- a/crates/fidc-core/src/data.rs +++ b/crates/fidc-core/src/data.rs @@ -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