aboutsummaryrefslogtreecommitdiff
path: root/vendor/bit_field/benches
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/bit_field/benches')
-rw-r--r--vendor/bit_field/benches/bench.rs233
1 files changed, 0 insertions, 233 deletions
diff --git a/vendor/bit_field/benches/bench.rs b/vendor/bit_field/benches/bench.rs
deleted file mode 100644
index 676461b..0000000
--- a/vendor/bit_field/benches/bench.rs
+++ /dev/null
@@ -1,233 +0,0 @@
-#![feature(test)]
-
-extern crate bit_field;
-
-use bit_field::*;
-
-pub trait BitOper {
- const BIT_LEN: usize;
- fn get_b(&self, idx: usize) -> bool;
- fn set_b(&mut self, idx: usize, val: bool);
- fn toggle(&mut self, idx: usize);
-}
-
-pub trait BitArrayOper<T: BitOper> {
- fn get_blen(&self) -> usize;
- fn get_b(&self, idx: usize) -> bool;
- fn set_b(&mut self, idx: usize, val: bool);
- fn toggle(&mut self, idx: usize);
-}
-
-impl BitOper for u8 {
- const BIT_LEN: usize = std::mem::size_of::<Self>() as usize * 8;
-
- fn set_b(&mut self, idx: usize, val: bool) {
- assert!(idx < Self::BIT_LEN);
- if val {
- *self |= 1 << idx;
- } else {
- *self &= !(1 << idx);
- }
- }
-
- fn get_b(&self, idx: usize) -> bool {
- assert!(idx < Self::BIT_LEN);
- (self & 1 << idx) != 0
- }
-
- fn toggle(&mut self, idx: usize) {
- assert!(idx < Self::BIT_LEN);
- *self ^= 1 << idx;
- }
-}
-
-impl BitOper for u32 {
- const BIT_LEN: usize = std::mem::size_of::<Self>() as usize * 8;
- fn set_b(&mut self, idx: usize, val: bool) {
- assert!(idx < Self::BIT_LEN);
- if val {
- *self |= 1 << idx;
- } else {
- *self &= !(1 << idx);
- }
- }
-
- fn get_b(&self, idx: usize) -> bool {
- assert!(idx < Self::BIT_LEN);
- (self & 1 << idx) != 0
- }
-
- fn toggle(&mut self, idx: usize) {
- assert!(idx < Self::BIT_LEN);
- *self ^= 1 << idx;
- }
-}
-
-impl BitOper for u64 {
- const BIT_LEN: usize = std::mem::size_of::<Self>() as usize * 8;
- fn set_b(&mut self, idx: usize, val: bool) {
- assert!(idx < Self::BIT_LEN);
- if val {
- *self |= 1 << idx;
- } else {
- *self &= !(1 << idx);
- }
- }
-
- fn get_b(&self, idx: usize) -> bool {
- assert!(idx < Self::BIT_LEN);
- (self & 1 << idx) != 0
- }
-
- fn toggle(&mut self, idx: usize) {
- assert!(idx < Self::BIT_LEN);
- *self ^= 1 << idx;
- }
-}
-
-impl<T: BitOper> BitArrayOper<T> for [T] {
- fn get_blen(&self) -> usize {
- self.len() * T::BIT_LEN
- }
-
- fn get_b(&self, idx: usize) -> bool {
- self[idx / T::BIT_LEN].get_b(idx % T::BIT_LEN)
- }
-
- fn set_b(&mut self, idx: usize, val: bool) {
- self[idx / T::BIT_LEN].set_b(idx % T::BIT_LEN, val);
- }
-
- fn toggle(&mut self, idx: usize) {
- self[idx / T::BIT_LEN].toggle(idx % T::BIT_LEN);
- }
-}
-
-extern crate test;
-
-use test::Bencher;
-
-const LEN: usize = 256;
-
-fn set_bitfield<T: BitField>(v: &mut Vec<T>) {
- for i in 0..v.len() * T::BIT_LENGTH {
- v.as_mut_slice().set_bit(i, true);;
- }
-}
-
-fn get_bitfield<T: BitField>(v: &Vec<T>) {
- for i in 0..v.len() * T::BIT_LENGTH {
- let _b = v.as_slice().get_bit(i);
- }
-}
-
-fn set_trivial<T: BitOper>(v: &mut Vec<T>) {
- for i in 0..v.len() * T::BIT_LEN {
- v.set_b(i, true);
- }
-}
-
-fn get_trivial<T: BitOper>(v: &Vec<T>) {
- for i in 0..v.len() * T::BIT_LEN {
- let _b = v.get_b(i);
- }
-}
-
-#[bench]
-fn u8_set_bitfield(b: &mut Bencher) {
- let mut v = vec![0u8; LEN];
- b.iter(|| {
- set_bitfield(&mut v);
- });
-}
-
-#[bench]
-fn u8_set_trivial(b: &mut Bencher) {
- let mut v = vec![0u8; LEN];
-
- b.iter(|| {
- set_trivial(&mut v);
- });
-}
-
-#[bench]
-fn u8_get_bitfield(b: &mut Bencher) {
- let v = vec![1u8; LEN];
- b.iter(|| {
- get_bitfield(&v);
- });
-}
-
-#[bench]
-fn u8_get_trivial(b: &mut Bencher) {
- let v = vec![1u8; LEN];
- b.iter(|| {
- get_trivial(&v);
- });
-}
-
-#[bench]
-fn u32_set_bitfield(b: &mut Bencher) {
- let mut v = vec![0u32; LEN];
- b.iter(|| {
- set_bitfield(&mut v);
- });
-}
-
-#[bench]
-fn u32_set_trivial(b: &mut Bencher) {
- let mut v = vec![0u32; LEN];
-
- b.iter(|| {
- set_trivial(&mut v);
- });
-}
-
-#[bench]
-fn u32_get_bitfield(b: &mut Bencher) {
- let v = vec![1u32; LEN];
- b.iter(|| {
- get_bitfield(&v);
- });
-}
-
-#[bench]
-fn u32_get_trivial(b: &mut Bencher) {
- let v = vec![1u32; LEN];
- b.iter(|| {
- get_trivial(&v);
- });
-}
-
-#[bench]
-fn u64_set_bitfield(b: &mut Bencher) {
- let mut v = vec![0u64; LEN];
- b.iter(|| {
- set_bitfield(&mut v);
- });
-}
-
-#[bench]
-fn u64_set_trivial(b: &mut Bencher) {
- let mut v = vec![0u64; LEN];
-
- b.iter(|| {
- set_trivial(&mut v);
- });
-}
-
-#[bench]
-fn u64_get_bitfield(b: &mut Bencher) {
- let v = vec![1u64; LEN];
- b.iter(|| {
- get_bitfield(&v);
- });
-}
-
-#[bench]
-fn u64_get_trivial(b: &mut Bencher) {
- let v = vec![1u64; LEN];
- b.iter(|| {
- get_trivial(&v);
- });
-}