perf: index factor lookups by symbol
This commit is contained in:
@@ -2501,12 +2501,14 @@ impl DataSet {
|
|||||||
if start > end {
|
if start > end {
|
||||||
return Vec::new();
|
return Vec::new();
|
||||||
}
|
}
|
||||||
|
let Some(symbol_id) = self.symbol_id(symbol) else {
|
||||||
|
return Vec::new();
|
||||||
|
};
|
||||||
let field = normalize_field(field);
|
let field = normalize_field(field);
|
||||||
let mut rows = self
|
let mut rows = self
|
||||||
.factor_by_date
|
.factor_by_date
|
||||||
.range(start..=end)
|
.range(start..=end)
|
||||||
.flat_map(|(_, snapshots)| snapshots.iter())
|
.filter_map(|(date, _)| self.factor_by_symbol_id(*date, symbol_id))
|
||||||
.filter(|snapshot| snapshot.symbol == symbol)
|
|
||||||
.filter_map(|snapshot| {
|
.filter_map(|snapshot| {
|
||||||
factor_numeric_value(snapshot, &field).map(|value| FactorValue {
|
factor_numeric_value(snapshot, &field).map(|value| FactorValue {
|
||||||
date: snapshot.date,
|
date: snapshot.date,
|
||||||
|
|||||||
Reference in New Issue
Block a user