(c: &mut Criterion)
| 144 | } |
| 145 | |
| 146 | fn 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()], |
nothing calls this directly
no test coverage detected
searching dependent graphs…