@@ -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]
60124fn 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+
140228fn 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+
150245fn 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