Skip to content

Commit 9444d20

Browse files
authored
More arithmetic benchmarks (#8402)
Signed-off-by: Nicholas Gates <nick@nickgates.com>
1 parent d0013ff commit 9444d20

1 file changed

Lines changed: 95 additions & 0 deletions

File tree

vortex-array/benches/binary_ops.rs

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,70 @@ fn mul_i64_nonnull(bencher: Bencher) {
5656
bench_primitive(bencher, lhs, rhs, Operator::Mul);
5757
}
5858

59+
#[divan::bench]
60+
fn mul_i8_nonnull(bencher: Bencher) {
61+
let lhs = primitive_i8_small_nonnull(1).into_array();
62+
let rhs = primitive_i8_small_nonnull(7).into_array();
63+
64+
bench_primitive(bencher, lhs, rhs, Operator::Mul);
65+
}
66+
67+
#[divan::bench]
68+
fn mul_u8_nonnull(bencher: Bencher) {
69+
let lhs = primitive_u8_small_nonnull(1).into_array();
70+
let rhs = primitive_u8_small_nonnull(7).into_array();
71+
72+
bench_primitive(bencher, lhs, rhs, Operator::Mul);
73+
}
74+
75+
#[divan::bench]
76+
fn mul_i16_nonnull(bencher: Bencher) {
77+
let lhs = primitive_i16_small_nonnull(1).into_array();
78+
let rhs = primitive_i16_small_nonnull(17).into_array();
79+
80+
bench_primitive(bencher, lhs, rhs, Operator::Mul);
81+
}
82+
83+
#[divan::bench]
84+
fn mul_u16_nonnull(bencher: Bencher) {
85+
let lhs = primitive_u16_small_nonnull(1).into_array();
86+
let rhs = primitive_u16_small_nonnull(17).into_array();
87+
88+
bench_primitive(bencher, lhs, rhs, Operator::Mul);
89+
}
90+
91+
#[divan::bench]
92+
fn mul_i32_nonnull(bencher: Bencher) {
93+
let lhs = primitive_i32_small_nonnull(1).into_array();
94+
let rhs = primitive_i32_small_nonnull(17).into_array();
95+
96+
bench_primitive(bencher, lhs, rhs, Operator::Mul);
97+
}
98+
99+
#[divan::bench]
100+
fn mul_u32_nonnull(bencher: Bencher) {
101+
let lhs = primitive_u32_small_nonnull(1).into_array();
102+
let rhs = primitive_u32_small_nonnull(17).into_array();
103+
104+
bench_primitive(bencher, lhs, rhs, Operator::Mul);
105+
}
106+
107+
#[divan::bench]
108+
fn mul_i32_nullable(bencher: Bencher) {
109+
let lhs = primitive_i32_small_nullable(1, 7).into_array();
110+
let rhs = primitive_i32_small_nullable(17, 5).into_array();
111+
112+
bench_primitive(bencher, lhs, rhs, Operator::Mul);
113+
}
114+
115+
#[divan::bench]
116+
fn mul_i32_constant(bencher: Bencher) {
117+
let lhs = primitive_i32_small_nonnull(1).into_array();
118+
let rhs = ConstantArray::new(31i32, LEN).into_array();
119+
120+
bench_primitive(bencher, lhs, rhs, Operator::Mul);
121+
}
122+
59123
#[divan::bench]
60124
fn div_i64_nonnull(bencher: Bencher) {
61125
let lhs = primitive_nonnull(1_000_000).into_array();
@@ -137,6 +201,30 @@ fn primitive_small_nonnull(offset: i64) -> PrimitiveArray {
137201
PrimitiveArray::from_iter((0..LEN as i64).map(|i| ((i + offset) % 1024) + 1))
138202
}
139203

204+
fn primitive_i8_small_nonnull(offset: i8) -> PrimitiveArray {
205+
PrimitiveArray::from_iter((0..LEN).map(|i| (((i as i32 + offset as i32) % 21) - 10) as i8))
206+
}
207+
208+
fn primitive_u8_small_nonnull(offset: u8) -> PrimitiveArray {
209+
PrimitiveArray::from_iter((0..LEN).map(|i| ((i + offset as usize) % 15 + 1) as u8))
210+
}
211+
212+
fn primitive_i16_small_nonnull(offset: i16) -> PrimitiveArray {
213+
PrimitiveArray::from_iter((0..LEN).map(|i| (((i as i32 + offset as i32) % 255) - 127) as i16))
214+
}
215+
216+
fn primitive_u16_small_nonnull(offset: u16) -> PrimitiveArray {
217+
PrimitiveArray::from_iter((0..LEN).map(|i| ((i + offset as usize) % 251 + 1) as u16))
218+
}
219+
220+
fn primitive_i32_small_nonnull(offset: i32) -> PrimitiveArray {
221+
PrimitiveArray::from_iter((0..LEN).map(|i| (((i as i64 + offset as i64) % 4096) - 2048) as i32))
222+
}
223+
224+
fn primitive_u32_small_nonnull(offset: u32) -> PrimitiveArray {
225+
PrimitiveArray::from_iter((0..LEN).map(|i| ((i + offset as usize) % 4096 + 1) as u32))
226+
}
227+
140228
fn primitive_nonzero() -> PrimitiveArray {
141229
PrimitiveArray::from_iter((0..LEN as i64).map(|i| (i % 255) + 1))
142230
}
@@ -147,6 +235,13 @@ fn primitive_nullable(base: i64, null_every: usize) -> PrimitiveArray {
147235
)
148236
}
149237

238+
fn primitive_i32_small_nullable(offset: i32, null_every: usize) -> PrimitiveArray {
239+
PrimitiveArray::from_option_iter((0..LEN).map(|i| {
240+
(!i.is_multiple_of(null_every))
241+
.then_some((((i as i64 + offset as i64) % 4096) - 2048) as i32)
242+
}))
243+
}
244+
150245
fn bool_nullable(true_every: usize, null_every: usize) -> BoolArray {
151246
BoolArray::from_iter(
152247
(0..LEN).map(|i| (!i.is_multiple_of(null_every)).then_some(i.is_multiple_of(true_every))),

0 commit comments

Comments
 (0)