#[macro_use]
extern crate criterion;
use criterion::Criterion;
extern crate datafusion;
use datafusion::rel::*;
use datafusion::exec::*;
extern crate serde_json;
fn dataframe() {
let ctx = ExecutionContext::new();
let schema = Schema::new(vec![
Field::new("city", DataType::String, false),
Field::new("lat", DataType::Double, false),
Field::new("lng", DataType::Double, false)]);
let df1 = ctx.load("test/data/uk_cities.csv", &schema).unwrap();
let lat = df1.col("lat").unwrap();
let value = Expr::Literal(Value::Double(52.0));
let df2 = df1.filter(lat.gt(&value)).unwrap();
let st_point = ctx.udf("ST_Point",vec![
df2.col("lat").unwrap(),
df2.col("lng").unwrap()]);
let df3 = df2.select(vec![st_point]).unwrap();
df3.write("_northern_cities.csv").unwrap();
}
fn criterion_benchmark(c: &mut Criterion) {
c.bench_function("dataframe", |b| b.iter(|| dataframe()));
}
criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);