From 991579b46259ed751130210478e06c4292388f86 Mon Sep 17 00:00:00 2001 From: cakeni <2150015994@qq.com> Date: Tue, 11 Aug 2026 19:42:22 +0800 Subject: [PATCH] perf: replace concat_elements_utf8_many BufferBuilders with Vec --- arrow-string/src/concat_elements.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/arrow-string/src/concat_elements.rs b/arrow-string/src/concat_elements.rs index cbba7fbec6c6..7efab59c2c7d 100644 --- a/arrow-string/src/concat_elements.rs +++ b/arrow-string/src/concat_elements.rs @@ -138,7 +138,7 @@ pub fn concat_elements_utf8_many( .map(|a| a.value_offsets().iter().peekable()) .collect::>(); - let mut output_values = BufferBuilder::::new( + let mut output_values = Vec::with_capacity( data_values .iter() .zip(offsets.iter_mut()) @@ -146,8 +146,8 @@ pub fn concat_elements_utf8_many( .sum(), ); - let mut output_offsets = BufferBuilder::::new(size + 1); - output_offsets.append(Offset::zero()); + let mut output_offsets = Vec::with_capacity(size + 1); + output_offsets.push(Offset::zero()); for _ in 0..size { data_values .iter() @@ -155,15 +155,15 @@ pub fn concat_elements_utf8_many( .for_each(|(values, offset)| { let index_start = offset.next().unwrap().as_usize(); let index_end = offset.peek().unwrap().as_usize(); - output_values.append_slice(&values[index_start..index_end]); + output_values.extend_from_slice(&values[index_start..index_end]); }); - output_offsets.append(Offset::from_usize(output_values.len()).unwrap()); + output_offsets.push(Offset::from_usize(output_values.len()).unwrap()); } let builder = ArrayDataBuilder::new(GenericStringArray::::DATA_TYPE) .len(size) - .add_buffer(output_offsets.finish()) - .add_buffer(output_values.finish()) + .add_buffer(output_offsets.into()) + .add_buffer(output_values.into()) .nulls(nulls); // SAFETY - offsets valid by construction