diff --git a/crates/polars-core/src/chunked_array/list/iterator.rs b/crates/polars-core/src/chunked_array/list/iterator.rs index 05d2ef3e11f1..2e4c50eb1511 100644 --- a/crates/polars-core/src/chunked_array/list/iterator.rs +++ b/crates/polars-core/src/chunked_array/list/iterator.rs @@ -2,6 +2,7 @@ use std::marker::PhantomData; use std::ptr::NonNull; use std::rc::Rc; +use crate::chunked_array::flags::StatisticsFlags; use crate::prelude::*; use crate::series::amortized_iter::{unstable_series_container_and_ptr, AmortSeries, ArrayBox}; @@ -81,10 +82,13 @@ impl>> Iterator for AmortizedListIter<'_, I> // update the inner state unsafe { *self.inner.as_mut() = array_ref }; + // As an optimization, we try to minimize how many calls to + // _get_inner_mut() we do. + let series_mut_inner = series_mut._get_inner_mut(); // last iteration could have set the sorted flag (e.g. in compute_len) - series_mut.clear_flags(); + series_mut_inner._set_flags(StatisticsFlags::empty()); // make sure that the length is correct - series_mut._get_inner_mut().compute_len(); + series_mut_inner.compute_len(); } // SAFETY: