parity-common/ethbloom/benches/unrolling.rs

74 lines
1.1 KiB
Rust

#![feature(test)]
extern crate test;
extern crate rand;
#[macro_use]
extern crate crunchy;
use test::{Bencher, black_box};
use rand::Rng;
fn random_data() -> [u8; 256] {
let mut res = [0u8; 256];
rand::thread_rng().fill_bytes(&mut res);
res
}
#[bench]
fn forwards_with_crunchy(b: &mut Bencher) {
let mut data = random_data();
b.iter(|| {
let other_data = random_data();
unroll! {
for i in 0..255 {
data[i] |= other_data[i];
}
}
});
black_box(data);
}
#[bench]
fn backwards_with_crunchy(b: &mut Bencher) {
let mut data = random_data();
b.iter(|| {
let other_data = random_data();
unroll! {
for i in 0..255 {
data[255-i] |= other_data[255-i];
}
}
});
black_box(data);
}
#[bench]
fn forwards_without_crunchy(b: &mut Bencher) {
let mut data = random_data();
b.iter(|| {
let other_data = random_data();
for i in 0..255 {
data[i] |= other_data[i];
}
});
black_box(data);
}
#[bench]
fn backwards_without_crunchy(b: &mut Bencher) {
let mut data = random_data();
b.iter(|| {
let other_data = random_data();
for i in 0..255 {
data[255-i] |= other_data[255-i];
}
});
black_box(data);
}