Skip to content

Commit c93ce39

Browse files
authored
Add NaN handling in dyn scalar comparison kernels (#2830)
* Add NaN handling in dyn scalar comparison kernels * Use trait * Fix clippy * Prepare for simd and non-simd tests * Restore flight protocal files. * Use ArrowNativeTypeOp as type bound * Remove num::ToPrimitive addition
1 parent f8c4037 commit c93ce39

File tree

3 files changed

+217
-70
lines changed

3 files changed

+217
-70
lines changed

arrow/benches/comparison_kernels.rs

Lines changed: 25 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -33,83 +33,41 @@ where
3333
eq(criterion::black_box(arr_a), criterion::black_box(arr_b)).unwrap();
3434
}
3535

36-
fn bench_eq_scalar<T>(arr_a: &PrimitiveArray<T>, value_b: T::Native)
37-
where
38-
T: ArrowNumericType,
39-
{
40-
eq_scalar(criterion::black_box(arr_a), criterion::black_box(value_b)).unwrap();
41-
}
42-
4336
fn bench_neq<T>(arr_a: &PrimitiveArray<T>, arr_b: &PrimitiveArray<T>)
4437
where
4538
T: ArrowNumericType,
4639
{
4740
neq(criterion::black_box(arr_a), criterion::black_box(arr_b)).unwrap();
4841
}
4942

50-
fn bench_neq_scalar<T>(arr_a: &PrimitiveArray<T>, value_b: T::Native)
51-
where
52-
T: ArrowNumericType,
53-
{
54-
neq_scalar(criterion::black_box(arr_a), criterion::black_box(value_b)).unwrap();
55-
}
56-
5743
fn bench_lt<T>(arr_a: &PrimitiveArray<T>, arr_b: &PrimitiveArray<T>)
5844
where
5945
T: ArrowNumericType,
6046
{
6147
lt(criterion::black_box(arr_a), criterion::black_box(arr_b)).unwrap();
6248
}
6349

64-
fn bench_lt_scalar<T>(arr_a: &PrimitiveArray<T>, value_b: T::Native)
65-
where
66-
T: ArrowNumericType,
67-
{
68-
lt_scalar(criterion::black_box(arr_a), criterion::black_box(value_b)).unwrap();
69-
}
70-
7150
fn bench_lt_eq<T>(arr_a: &PrimitiveArray<T>, arr_b: &PrimitiveArray<T>)
7251
where
7352
T: ArrowNumericType,
7453
{
7554
lt_eq(criterion::black_box(arr_a), criterion::black_box(arr_b)).unwrap();
7655
}
7756

78-
fn bench_lt_eq_scalar<T>(arr_a: &PrimitiveArray<T>, value_b: T::Native)
79-
where
80-
T: ArrowNumericType,
81-
{
82-
lt_eq_scalar(criterion::black_box(arr_a), criterion::black_box(value_b)).unwrap();
83-
}
84-
8557
fn bench_gt<T>(arr_a: &PrimitiveArray<T>, arr_b: &PrimitiveArray<T>)
8658
where
8759
T: ArrowNumericType,
8860
{
8961
gt(criterion::black_box(arr_a), criterion::black_box(arr_b)).unwrap();
9062
}
9163

92-
fn bench_gt_scalar<T>(arr_a: &PrimitiveArray<T>, value_b: T::Native)
93-
where
94-
T: ArrowNumericType,
95-
{
96-
gt_scalar(criterion::black_box(arr_a), criterion::black_box(value_b)).unwrap();
97-
}
98-
9964
fn bench_gt_eq<T>(arr_a: &PrimitiveArray<T>, arr_b: &PrimitiveArray<T>)
10065
where
10166
T: ArrowNumericType,
10267
{
10368
gt_eq(criterion::black_box(arr_a), criterion::black_box(arr_b)).unwrap();
10469
}
10570

106-
fn bench_gt_eq_scalar<T>(arr_a: &PrimitiveArray<T>, value_b: T::Native)
107-
where
108-
T: ArrowNumericType,
109-
{
110-
gt_eq_scalar(criterion::black_box(arr_a), criterion::black_box(value_b)).unwrap();
111-
}
112-
11371
fn bench_like_utf8_scalar(arr_a: &StringArray, value_b: &str) {
11472
like_utf8_scalar(criterion::black_box(arr_a), criterion::black_box(value_b)).unwrap();
11573
}
@@ -164,39 +122,57 @@ fn add_benchmark(c: &mut Criterion) {
164122

165123
c.bench_function("eq Float32", |b| b.iter(|| bench_eq(&arr_a, &arr_b)));
166124
c.bench_function("eq scalar Float32", |b| {
167-
b.iter(|| bench_eq_scalar(&arr_a, 1.0))
125+
b.iter(|| {
126+
eq_scalar(criterion::black_box(&arr_a), criterion::black_box(1.0)).unwrap()
127+
})
168128
});
169129

170130
c.bench_function("neq Float32", |b| b.iter(|| bench_neq(&arr_a, &arr_b)));
171131
c.bench_function("neq scalar Float32", |b| {
172-
b.iter(|| bench_neq_scalar(&arr_a, 1.0))
132+
b.iter(|| {
133+
neq_scalar(criterion::black_box(&arr_a), criterion::black_box(1.0)).unwrap()
134+
})
173135
});
174136

175137
c.bench_function("lt Float32", |b| b.iter(|| bench_lt(&arr_a, &arr_b)));
176138
c.bench_function("lt scalar Float32", |b| {
177-
b.iter(|| bench_lt_scalar(&arr_a, 1.0))
139+
b.iter(|| {
140+
lt_scalar(criterion::black_box(&arr_a), criterion::black_box(1.0)).unwrap()
141+
})
178142
});
179143

180144
c.bench_function("lt_eq Float32", |b| b.iter(|| bench_lt_eq(&arr_a, &arr_b)));
181145
c.bench_function("lt_eq scalar Float32", |b| {
182-
b.iter(|| bench_lt_eq_scalar(&arr_a, 1.0))
146+
b.iter(|| {
147+
lt_eq_scalar(criterion::black_box(&arr_a), criterion::black_box(1.0)).unwrap()
148+
})
183149
});
184150

185151
c.bench_function("gt Float32", |b| b.iter(|| bench_gt(&arr_a, &arr_b)));
186152
c.bench_function("gt scalar Float32", |b| {
187-
b.iter(|| bench_gt_scalar(&arr_a, 1.0))
153+
b.iter(|| {
154+
gt_scalar(criterion::black_box(&arr_a), criterion::black_box(1.0)).unwrap()
155+
})
188156
});
189157

190158
c.bench_function("gt_eq Float32", |b| b.iter(|| bench_gt_eq(&arr_a, &arr_b)));
191159
c.bench_function("gt_eq scalar Float32", |b| {
192-
b.iter(|| bench_gt_eq_scalar(&arr_a, 1.0))
160+
b.iter(|| {
161+
gt_eq_scalar(criterion::black_box(&arr_a), criterion::black_box(1.0)).unwrap()
162+
})
193163
});
194164

195165
c.bench_function("eq MonthDayNano", |b| {
196166
b.iter(|| bench_eq(&arr_month_day_nano_a, &arr_month_day_nano_b))
197167
});
198168
c.bench_function("eq scalar MonthDayNano", |b| {
199-
b.iter(|| bench_eq_scalar(&arr_month_day_nano_a, 123))
169+
b.iter(|| {
170+
eq_scalar(
171+
criterion::black_box(&arr_month_day_nano_a),
172+
criterion::black_box(123),
173+
)
174+
.unwrap()
175+
})
200176
});
201177

202178
c.bench_function("like_utf8 scalar equals", |b| {

0 commit comments

Comments
 (0)