MCPcopy Create free account
hub / github.com/apache/datafusion / criterion_benchmark

Function criterion_benchmark

datafusion/functions-nested/benches/array_slice.rs:146–225  ·  view source on GitHub ↗
(c: &mut Criterion)

Source from the content-addressed store, hash-verified

144}
145
146fn criterion_benchmark(c: &mut Criterion) {
147 let rng = &mut StdRng::seed_from_u64(42);
148 let size = 1_000_000;
149 let child_array_size = 100;
150 let null_density = 0.1;
151
152 let (list_array, list_view_array) =
153 create_inputs(rng, size, child_array_size, null_density);
154
155 let mut array_from = Vec::with_capacity(size);
156 let mut array_to = Vec::with_capacity(size);
157 let mut array_stride = Vec::with_capacity(size);
158 for child_array_size in list_array.offsets().lengths() {
159 let (from, to, stride) = random_from_to_stride(
160 rng,
161 child_array_size as i64,
162 null_density,
163 &[None, Some(-2), Some(-1), Some(1), Some(2)],
164 );
165 array_from.push(from);
166 array_to.push(to);
167 array_stride.push(stride);
168 }
169
170 // input
171 let list_array = ColumnarValue::Array(Arc::new(list_array));
172 let list_view_array = ColumnarValue::Array(Arc::new(list_view_array));
173
174 // args
175 let array_from = ColumnarValue::Array(Arc::new(Int64Array::from(array_from)));
176 let array_to = ColumnarValue::Array(Arc::new(Int64Array::from(array_to)));
177 let array_stride = ColumnarValue::Array(Arc::new(Int64Array::from(array_stride)));
178 let scalar_from = ColumnarValue::Scalar(ScalarValue::from(1i64));
179 let scalar_to = ColumnarValue::Scalar(ScalarValue::from(child_array_size as i64 / 2));
180
181 for input in [list_array, list_view_array] {
182 let input_type = input.data_type().to_string();
183
184 array_slice_benchmark(
185 &format!("array_slice: input {input_type}, array args"),
186 input.clone(),
187 vec![array_from.clone(), array_to.clone(), array_stride.clone()],
188 c,
189 size,
190 );
191
192 array_slice_benchmark(
193 &format!("array_slice: input {input_type}, array args, no stride"),
194 input.clone(),
195 vec![array_from.clone(), array_to.clone()],
196 c,
197 size,
198 );
199
200 array_slice_benchmark(
201 &format!("array_slice: input {input_type}, scalar args, no stride"),
202 input.clone(),
203 vec![scalar_from.clone(), scalar_to.clone()],

Callers

nothing calls this directly

Calls 9

random_from_to_strideFunction · 0.85
newFunction · 0.85
offsetsMethod · 0.80
create_inputsFunction · 0.70
array_slice_benchmarkFunction · 0.70
pushMethod · 0.45
to_stringMethod · 0.45
data_typeMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…