in datafusion/core/benches/sort.rs [111:149]
fn criterion_benchmark(c: &mut Criterion) {
let cases: Vec<(&str, &dyn Fn(bool) -> PartitionedBatches)> = vec![
("i64", &i64_streams),
("f64", &f64_streams),
("utf8 low cardinality", &utf8_low_cardinality_streams),
("utf8 high cardinality", &utf8_high_cardinality_streams),
("utf8 tuple", &utf8_tuple_streams),
("utf8 dictionary", &dictionary_streams),
("utf8 dictionary tuple", &dictionary_tuple_streams),
("mixed dictionary tuple", &mixed_dictionary_tuple_streams),
("mixed tuple", &mixed_tuple_streams),
];
for (name, f) in cases {
c.bench_function(&format!("merge sorted {name}"), |b| {
let data = f(true);
let case = BenchCase::merge_sorted(&data);
b.iter(move || case.run())
});
c.bench_function(&format!("sort merge {name}"), |b| {
let data = f(false);
let case = BenchCase::sort_merge(&data);
b.iter(move || case.run())
});
c.bench_function(&format!("sort {name}"), |b| {
let data = f(false);
let case = BenchCase::sort(&data);
b.iter(move || case.run())
});
c.bench_function(&format!("sort partitioned {name}"), |b| {
let data = f(false);
let case = BenchCase::sort_partitioned(&data);
b.iter(move || case.run())
});
}
}