#[macro_use]
extern crate criterion;
extern crate arrow;
extern crate datafusion;
mod data_utils;
use crate::criterion::Criterion;
use datafusion::functions_array::expr_fn::{array_replace_all, make_array};
use datafusion_expr::lit;
fn criterion_benchmark(c: &mut Criterion) {
let array_len = 100000000;
let array = (0..array_len).map(|_| lit(2_i64)).collect::<Vec<_>>();
let list_array = make_array(vec![make_array(array); 3]);
let from_array = make_array(vec![lit(2_i64); 3]);
let to_array = make_array(vec![lit(-2_i64); 3]);
let expected_array = list_array.clone();
c.bench_function("array_replace", |b| {
b.iter(|| {
assert_eq!(
array_replace_all(
list_array.clone(),
from_array.clone(),
to_array.clone()
),
*criterion::black_box(&expected_array)
)
})
});
}
criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);