Skip to content

Commit 20282d1

Browse files
authored
Use required-features for CSV benchmarks/examples (#2602)
1 parent 12ad8d7 commit 20282d1

File tree

4 files changed

+66
-75
lines changed

4 files changed

+66
-75
lines changed

arrow/Cargo.toml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,16 @@ name = "dynamic_types"
104104
required-features = ["prettyprint"]
105105
path = "./examples/dynamic_types.rs"
106106

107+
[[example]]
108+
name = "read_csv"
109+
required-features = ["prettyprint", "csv"]
110+
path = "./examples/read_csv.rs"
111+
112+
[[example]]
113+
name = "read_csv_infer_schema"
114+
required-features = ["prettyprint", "csv"]
115+
path = "./examples/read_csv_infer_schema.rs"
116+
107117
[[bench]]
108118
name = "aggregate_kernels"
109119
harness = false
@@ -177,6 +187,7 @@ required-features = ["test_utils"]
177187
[[bench]]
178188
name = "csv_writer"
179189
harness = false
190+
required-features = ["csv"]
180191

181192
[[bench]]
182193
name = "json_reader"

arrow/benches/csv_writer.rs

Lines changed: 33 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ extern crate criterion;
2121
use criterion::*;
2222

2323
use arrow::array::*;
24-
#[cfg(feature = "csv")]
2524
use arrow::csv;
2625
use arrow::datatypes::*;
2726
use arrow::record_batch::RecordBatch;
@@ -30,47 +29,44 @@ use std::fs::File;
3029
use std::sync::Arc;
3130

3231
fn criterion_benchmark(c: &mut Criterion) {
33-
#[cfg(feature = "csv")]
34-
{
35-
let schema = Schema::new(vec![
36-
Field::new("c1", DataType::Utf8, false),
37-
Field::new("c2", DataType::Float64, true),
38-
Field::new("c3", DataType::UInt32, false),
39-
Field::new("c4", DataType::Boolean, true),
40-
]);
32+
let schema = Schema::new(vec![
33+
Field::new("c1", DataType::Utf8, false),
34+
Field::new("c2", DataType::Float64, true),
35+
Field::new("c3", DataType::UInt32, false),
36+
Field::new("c4", DataType::Boolean, true),
37+
]);
4138

42-
let c1 = StringArray::from(vec![
43-
"Lorem ipsum dolor sit amet",
44-
"consectetur adipiscing elit",
45-
"sed do eiusmod tempor",
46-
]);
47-
let c2 = PrimitiveArray::<Float64Type>::from(vec![
48-
Some(123.564532),
49-
None,
50-
Some(-556132.25),
51-
]);
52-
let c3 = PrimitiveArray::<UInt32Type>::from(vec![3, 2, 1]);
53-
let c4 = BooleanArray::from(vec![Some(true), Some(false), None]);
39+
let c1 = StringArray::from(vec![
40+
"Lorem ipsum dolor sit amet",
41+
"consectetur adipiscing elit",
42+
"sed do eiusmod tempor",
43+
]);
44+
let c2 = PrimitiveArray::<Float64Type>::from(vec![
45+
Some(123.564532),
46+
None,
47+
Some(-556132.25),
48+
]);
49+
let c3 = PrimitiveArray::<UInt32Type>::from(vec![3, 2, 1]);
50+
let c4 = BooleanArray::from(vec![Some(true), Some(false), None]);
5451

55-
let b = RecordBatch::try_new(
56-
Arc::new(schema),
57-
vec![Arc::new(c1), Arc::new(c2), Arc::new(c3), Arc::new(c4)],
58-
)
59-
.unwrap();
60-
let path = env::temp_dir().join("bench_write_csv.csv");
61-
let file = File::create(path).unwrap();
62-
let mut writer = csv::Writer::new(file);
63-
let batches = vec![&b, &b, &b, &b, &b, &b, &b, &b, &b, &b, &b];
52+
let b = RecordBatch::try_new(
53+
Arc::new(schema),
54+
vec![Arc::new(c1), Arc::new(c2), Arc::new(c3), Arc::new(c4)],
55+
)
56+
.unwrap();
57+
let path = env::temp_dir().join("bench_write_csv.csv");
58+
let file = File::create(path).unwrap();
59+
let mut writer = csv::Writer::new(file);
60+
let batches = vec![&b, &b, &b, &b, &b, &b, &b, &b, &b, &b, &b];
6461

65-
c.bench_function("record_batches_to_csv", |b| {
66-
b.iter(|| {
67-
#[allow(clippy::unit_arg)]
68-
criterion::black_box(for batch in &batches {
69-
writer.write(batch).unwrap()
70-
});
62+
c.bench_function("record_batches_to_csv", |b| {
63+
b.iter(|| {
64+
#[allow(clippy::unit_arg)]
65+
criterion::black_box(for batch in &batches {
66+
writer.write(batch).unwrap()
7167
});
7268
});
73-
}
69+
});
7470
}
7571

7672
criterion_group!(benches, criterion_benchmark);

arrow/examples/read_csv.rs

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -20,30 +20,22 @@ extern crate arrow;
2020
use std::fs::File;
2121
use std::sync::Arc;
2222

23-
#[cfg(feature = "csv")]
2423
use arrow::csv;
2524
use arrow::datatypes::{DataType, Field, Schema};
26-
#[cfg(feature = "prettyprint")]
2725
use arrow::util::pretty::print_batches;
2826

2927
fn main() {
30-
#[cfg(feature = "csv")]
31-
{
32-
let schema = Schema::new(vec![
33-
Field::new("city", DataType::Utf8, false),
34-
Field::new("lat", DataType::Float64, false),
35-
Field::new("lng", DataType::Float64, false),
36-
]);
28+
let schema = Schema::new(vec![
29+
Field::new("city", DataType::Utf8, false),
30+
Field::new("lat", DataType::Float64, false),
31+
Field::new("lng", DataType::Float64, false),
32+
]);
3733

38-
let path = format!("{}/test/data/uk_cities.csv", env!("CARGO_MANIFEST_DIR"));
39-
let file = File::open(path).unwrap();
34+
let path = format!("{}/test/data/uk_cities.csv", env!("CARGO_MANIFEST_DIR"));
35+
let file = File::open(path).unwrap();
4036

41-
let mut csv =
42-
csv::Reader::new(file, Arc::new(schema), false, None, 1024, None, None, None);
43-
let _batch = csv.next().unwrap().unwrap();
44-
#[cfg(feature = "prettyprint")]
45-
{
46-
print_batches(&[_batch]).unwrap();
47-
}
48-
}
37+
let mut csv =
38+
csv::Reader::new(file, Arc::new(schema), false, None, 1024, None, None, None);
39+
let batch = csv.next().unwrap().unwrap();
40+
print_batches(&[batch]).unwrap();
4941
}

arrow/examples/read_csv_infer_schema.rs

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,28 +17,20 @@
1717

1818
extern crate arrow;
1919

20-
#[cfg(feature = "csv")]
2120
use arrow::csv;
22-
#[cfg(feature = "prettyprint")]
2321
use arrow::util::pretty::print_batches;
2422
use std::fs::File;
2523

2624
fn main() {
27-
#[cfg(feature = "csv")]
28-
{
29-
let path = format!(
30-
"{}/test/data/uk_cities_with_headers.csv",
31-
env!("CARGO_MANIFEST_DIR")
32-
);
33-
let file = File::open(path).unwrap();
34-
let builder = csv::ReaderBuilder::new()
35-
.has_header(true)
36-
.infer_schema(Some(100));
37-
let mut csv = builder.build(file).unwrap();
38-
let _batch = csv.next().unwrap().unwrap();
39-
#[cfg(feature = "prettyprint")]
40-
{
41-
print_batches(&[_batch]).unwrap();
42-
}
43-
}
25+
let path = format!(
26+
"{}/test/data/uk_cities_with_headers.csv",
27+
env!("CARGO_MANIFEST_DIR")
28+
);
29+
let file = File::open(path).unwrap();
30+
let builder = csv::ReaderBuilder::new()
31+
.has_header(true)
32+
.infer_schema(Some(100));
33+
let mut csv = builder.build(file).unwrap();
34+
let batch = csv.next().unwrap().unwrap();
35+
print_batches(&[batch]).unwrap();
4436
}

0 commit comments

Comments
 (0)