Skip to content

Commit 8f9f0b6

Browse files
committed
Remove unnecessary IndexSet
1 parent 00a21c0 commit 8f9f0b6

File tree

1 file changed

+8
-15
lines changed

1 file changed

+8
-15
lines changed

src/quantile/mod.rs

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use self::interpolate::{higher_index, lower_index, Interpolate};
22
use super::sort::get_many_from_sorted_mut_unchecked;
3-
use indexmap::IndexSet;
43
use ndarray::prelude::*;
54
use ndarray::{Data, DataMut, RemoveAxis, Zip};
65
use noisy_float::types::N64;
@@ -465,23 +464,17 @@ where
465464
return Some(Array::from_shape_vec(results_shape, Vec::new()).unwrap());
466465
}
467466

468-
let mut deduped_qs: Vec<N64> = qs.to_vec();
469-
deduped_qs.sort_by(|a, b| a.partial_cmp(b).unwrap());
470-
deduped_qs.dedup();
471-
472-
// IndexSet preserves insertion order:
473-
// - indexes will stay sorted;
474-
// - we avoid index duplication.
475-
let mut searched_indexes = IndexSet::new();
476-
for q in deduped_qs.iter() {
477-
if I::needs_lower(*q, axis_len) {
478-
searched_indexes.insert(lower_index(*q, axis_len));
467+
let mut searched_indexes = Vec::with_capacity(2 * qs.len());
468+
for &q in &qs {
469+
if I::needs_lower(q, axis_len) {
470+
searched_indexes.push(lower_index(q, axis_len));
479471
}
480-
if I::needs_higher(*q, axis_len) {
481-
searched_indexes.insert(higher_index(*q, axis_len));
472+
if I::needs_higher(q, axis_len) {
473+
searched_indexes.push(higher_index(q, axis_len));
482474
}
483475
}
484-
let searched_indexes: Vec<usize> = searched_indexes.into_iter().collect();
476+
searched_indexes.sort();
477+
searched_indexes.dedup();
485478

486479
let mut results = Array::from_elem(results_shape, data.first().unwrap().clone());
487480
Zip::from(results.lanes_mut(axis))

0 commit comments

Comments
 (0)