From 2ea960094ef3f440434612c1cc03ac97293bf5a5 Mon Sep 17 00:00:00 2001 From: Nicholas Gates Date: Sat, 9 May 2026 15:28:05 -0400 Subject: [PATCH] Faster Mask::from_slices Signed-off-by: Nicholas Gates --- vortex-mask/src/lib.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/vortex-mask/src/lib.rs b/vortex-mask/src/lib.rs index 29b2f5f83e4..339f9a12d74 100644 --- a/vortex-mask/src/lib.rs +++ b/vortex-mask/src/lib.rs @@ -281,10 +281,14 @@ impl Mask { return Self::AllTrue(len); } - let mut buf = BitBufferMut::new_unset(len); + let mut buf = BitBufferMut::with_capacity(len); + let mut cursor = 0; for (start, end) in slices.iter().copied() { - (start..end).for_each(|idx| buf.set(idx)); + buf.append_n(false, start - cursor); + buf.append_n(true, end - start); + cursor = end; } + buf.append_n(false, len - cursor); debug_assert_eq!(buf.len(), len); Self::Values(Arc::new(MaskValues {