74 lines
1.1 KiB
Rust
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);
|
||
|
}
|