From dff791b51f2d78cbb282e44701d3cc622748b8b5 Mon Sep 17 00:00:00 2001 From: boris Date: Mon, 31 Aug 2026 14:27:30 +0800 Subject: [PATCH] perf: index factor lookups by symbol --- crates/fidc-core/src/data.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/crates/fidc-core/src/data.rs b/crates/fidc-core/src/data.rs index 7a90fd8..e6c5768 100644 --- a/crates/fidc-core/src/data.rs +++ b/crates/fidc-core/src/data.rs @@ -2501,12 +2501,14 @@ impl DataSet { if start > end { return Vec::new(); } + let Some(symbol_id) = self.symbol_id(symbol) else { + return Vec::new(); + }; let field = normalize_field(field); let mut rows = self .factor_by_date .range(start..=end) - .flat_map(|(_, snapshots)| snapshots.iter()) - .filter(|snapshot| snapshot.symbol == symbol) + .filter_map(|(date, _)| self.factor_by_symbol_id(*date, symbol_id)) .filter_map(|snapshot| { factor_numeric_value(snapshot, &field).map(|value| FactorValue { date: snapshot.date,