Skip to content
This repository has been archived by the owner on Feb 18, 2024. It is now read-only.

Commit

Permalink
Added bench.
Browse files Browse the repository at this point in the history
  • Loading branch information
jorgecarleitao committed Aug 17, 2021
1 parent 0742edd commit afb05d2
Show file tree
Hide file tree
Showing 4 changed files with 127 additions and 0 deletions.
8 changes: 8 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -176,3 +176,11 @@ harness = false
[[bench]]
name = "arithmetic_kernels"
harness = false

[[bench]]
name = "bitmap"
harness = false

[[bench]]
name = "concat"
harness = false
60 changes: 60 additions & 0 deletions benches/bitmap.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
extern crate arrow2;

use std::iter::FromIterator;

use arrow2::bitmap::*;

use criterion::{criterion_group, criterion_main, Criterion};

//

fn add_benchmark(c: &mut Criterion) {
(10..=20).step_by(2).for_each(|log2_size| {
let size = 2usize.pow(log2_size);

let bitmap2 = Bitmap::from_iter((0..size).into_iter().map(|x| x % 3 == 0));

c.bench_function(&format!("bitmap extend aligned 2^{}", log2_size), |b| {
let mut bitmap1 = MutableBitmap::new();
b.iter(|| {
bitmap1.extend_from_bitmap(&bitmap2);
bitmap1.clear();
})
});

c.bench_function(&format!("bitmap extend unaligned 2^{}", log2_size), |b| {
let mut bitmap1 = MutableBitmap::with_capacity(1);
b.iter(|| {
bitmap1.push(true);
bitmap1.extend_from_bitmap(&bitmap2);
bitmap1.clear();
})
});

c.bench_function(
&format!("bitmap extend_constant aligned 2^{}", log2_size),
|b| {
let mut bitmap1 = MutableBitmap::new();
b.iter(|| {
bitmap1.extend_constant(size, true);
bitmap1.clear();
})
},
);

c.bench_function(
&format!("bitmap extend_constant unaligned 2^{}", log2_size),
|b| {
let mut bitmap1 = MutableBitmap::with_capacity(1);
b.iter(|| {
bitmap1.push(true);
bitmap1.extend_constant(size, true);
bitmap1.clear();
})
},
);
});
}

criterion_group!(benches, add_benchmark);
criterion_main!(benches);
52 changes: 52 additions & 0 deletions benches/concat.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
extern crate arrow2;

use arrow2::{
compute::concat,
datatypes::DataType,
util::bench_util::{create_boolean_array, create_primitive_array},
};

use criterion::{criterion_group, criterion_main, Criterion};

fn add_benchmark(c: &mut Criterion) {
(20..=20).step_by(2).for_each(|log2_size| {
let size = 2usize.pow(log2_size);

let array1 = create_primitive_array::<i32>(8, DataType::Int32, 0.5);
let array2 = create_primitive_array::<i32>(size + 1, DataType::Int32, 0.5);

c.bench_function(&format!("int32 concat aligned 2^{}", log2_size), |b| {
b.iter(|| {
let _ = concat::concatenate(&[&array1, &array2]);
})
});

let array1 = create_primitive_array::<i32>(9, DataType::Int32, 0.5);

c.bench_function(&format!("int32 concat unaligned 2^{}", log2_size), |b| {
b.iter(|| {
let _ = concat::concatenate(&[&array1, &array2]);
})
});

let array1 = create_boolean_array(8, 0.5, 0.5);
let array2 = create_boolean_array(size + 1, 0.5, 0.5);

c.bench_function(&format!("boolean concat aligned 2^{}", log2_size), |b| {
b.iter(|| {
let _ = concat::concatenate(&[&array1, &array2]);
})
});

let array1 = create_boolean_array(9, 0.5, 0.5);

c.bench_function(&format!("boolean concat unaligned 2^{}", log2_size), |b| {
b.iter(|| {
let _ = concat::concatenate(&[&array1, &array2]);
})
});
});
}

criterion_group!(benches, add_benchmark);
criterion_main!(benches);
7 changes: 7 additions & 0 deletions src/bitmap/mutable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,13 @@ impl MutableBitmap {
}
}

/// Empties the [`MutableBitmap`].
#[inline]
pub fn clear(&mut self) {
self.length = 0;
self.buffer.clear();
}

/// Initializes a zeroed [`MutableBitmap`].
#[inline]
pub fn from_len_zeroed(length: usize) -> Self {
Expand Down

0 comments on commit afb05d2

Please sign in to comment.