diff --git a/crates/fidc-core/src/data.rs b/crates/fidc-core/src/data.rs index ccf2fa9..4269569 100644 --- a/crates/fidc-core/src/data.rs +++ b/crates/fidc-core/src/data.rs @@ -4513,8 +4513,14 @@ fn group_rows_by_symbol_id<'a, T>( symbol_ids_by_date: &BTreeMap>, symbol_count: usize, ) -> Result>, DataSetError> { - let mut rows_by_symbol_id = (0..symbol_count) - .map(|_| Vec::<&T>::new()) + let mut row_counts_by_symbol_id = vec![0usize; symbol_count]; + for symbol_id in symbol_ids_by_date.values().flatten() { + row_counts_by_symbol_id[*symbol_id as usize] = + row_counts_by_symbol_id[*symbol_id as usize].saturating_add(1); + } + let mut rows_by_symbol_id = row_counts_by_symbol_id + .into_iter() + .map(Vec::<&T>::with_capacity) .collect::>(); for (date, rows) in groups { let symbol_ids = symbol_ids_by_date