#[macro_use]
extern crate criterion;
extern crate arrow;
extern crate datafusion;
mod data_utils;
use crate::criterion::Criterion;
use crate::data_utils::{create_record_batches, create_schema};
use datafusion::row::jit::writer::bench_write_batch_jit;
use datafusion::row::writer::bench_write_batch;
use datafusion::row::RowType;
use std::sync::Arc;
fn criterion_benchmark(c: &mut Criterion) {
let partitions_len = 8;
let array_len = 32768 * 1024; let batch_size = 2048;
let schema = Arc::new(create_schema());
let batches =
create_record_batches(schema.clone(), array_len, partitions_len, batch_size);
c.bench_function("compact row serializer", |b| {
b.iter(|| {
criterion::black_box(
bench_write_batch(&batches, schema.clone(), RowType::Compact).unwrap(),
)
})
});
c.bench_function("word aligned row serializer", |b| {
b.iter(|| {
criterion::black_box(
bench_write_batch(&batches, schema.clone(), RowType::WordAligned)
.unwrap(),
)
})
});
c.bench_function("compact row serializer jit", |b| {
b.iter(|| {
criterion::black_box(
bench_write_batch_jit(&batches, schema.clone(), RowType::Compact)
.unwrap(),
)
})
});
c.bench_function("word aligned row serializer jit", |b| {
b.iter(|| {
criterion::black_box(
bench_write_batch_jit(&batches, schema.clone(), RowType::WordAligned)
.unwrap(),
)
})
});
}
criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);