Skip to content

Commit

Permalink
remove intermediate collect and use collect_reversed
Browse files Browse the repository at this point in the history
  • Loading branch information
ritchie46 committed Sep 23, 2021
1 parent a21d2a2 commit f254b5c
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 24 deletions.
35 changes: 16 additions & 19 deletions polars/polars-core/src/chunked_array/ops/cum_agg.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,16 +60,21 @@ where
fn cummax(&self, reverse: bool) -> ChunkedArray<T> {
let init = Bounded::min_value();
let mut ca: Self = match reverse {
false => self.into_iter().scan(init, det_max).collect(),
true => self.into_iter().rev().scan(init, det_max).collect(),
false => self
.into_iter()
.scan(init, det_max)
.trust_my_length(self.len())
.collect_trusted(),
true => self
.into_iter()
.rev()
.scan(init, det_max)
.trust_my_length(self.len())
.collect_reversed(),
};

ca.rename(self.name());
if reverse {
ca.reverse()
} else {
ca
}
ca
}

fn cummin(&self, reverse: bool) -> ChunkedArray<T> {
Expand All @@ -85,15 +90,11 @@ where
.rev()
.scan(init, det_min)
.trust_my_length(self.len())
.collect_trusted(),
.collect_reversed(),
};

ca.rename(self.name());
if reverse {
ca.reverse()
} else {
ca
}
ca
}

fn cumsum(&self, reverse: bool) -> ChunkedArray<T> {
Expand All @@ -109,15 +110,11 @@ where
.rev()
.scan(init, det_sum)
.trust_my_length(self.len())
.collect_trusted(),
.collect_reversed(),
};

ca.rename(self.name());
if reverse {
ca.reverse()
} else {
ca
}
ca
}
}

Expand Down
8 changes: 3 additions & 5 deletions polars/polars-core/src/chunked_array/ops/fill_null.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,7 @@ fn fill_backward<T>(ca: &ChunkedArray<T>) -> ChunkedArray<T>
where
T: PolarsNumericType,
{
// TODO! improve performance. This is a double scan
let ca: ChunkedArray<T> = ca
.into_iter()
ca.into_iter()
.rev()
.scan(None, |previous, opt_v| match opt_v {
Some(value) => {
Expand All @@ -54,8 +52,7 @@ where
None => Some(*previous),
})
.trust_my_length(ca.len())
.collect_trusted();
ca.into_iter().rev().collect_trusted()
.collect_reversed()
}

macro_rules! impl_fill_backward {
Expand Down Expand Up @@ -151,6 +148,7 @@ impl ChunkFillNull for BooleanChunked {
Ok(out)
}
FillNullStrategy::Backward => {
// TODO: still a double scan. impl collect_reversed for boolean
let mut out: Self = impl_fill_backward!(self, BooleanChunked);
out.rename(self.name());
Ok(out)
Expand Down

0 comments on commit f254b5c

Please sign in to comment.